]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t7527: test FSMonitor on case insensitive+preserving file system
authorJeff Hostetler <jeffhost@microsoft.com>
Thu, 26 May 2022 21:47:18 +0000 (21:47 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 26 May 2022 22:59:27 +0000 (15:59 -0700)
Test that FS events from the OS are received using the preserved,
on-disk spelling of files/directories rather than spelling used
to make the change.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7527-builtin-fsmonitor.sh

index cf4fb72c3f0162064aab60f06ad23aa70f711618..fbb7d6aef6e654c7a15cab4d5b2c9e2e72400551 100755 (executable)
@@ -832,4 +832,40 @@ test_expect_success 'submodule always visited' '
        my_match_and_clean
 '
 
+# On a case-insensitive file system, confirm that the daemon
+# notices when the .git directory is moved/renamed/deleted
+# regardless of how it is spelled in the the FS event.
+# That is, does the FS event receive the spelling of the
+# operation or does it receive the spelling preserved with
+# the file/directory.
+#
+test_expect_success CASE_INSENSITIVE_FS 'case insensitive+preserving' '
+#      test_when_finished "stop_daemon_delete_repo test_insensitive" &&
+
+       git init test_insensitive &&
+
+       start_daemon -C test_insensitive --tf "$PWD/insensitive.trace" &&
+
+       mkdir -p test_insensitive/abc/def &&
+       echo xyz >test_insensitive/ABC/DEF/xyz &&
+
+       test_path_is_dir test_insensitive/.git &&
+       test_path_is_dir test_insensitive/.GIT &&
+
+       # Rename .git using an alternate spelling to verify that that
+       # daemon detects it and automatically shuts down.
+       mv test_insensitive/.GIT test_insensitive/.FOO &&
+       sleep 1 &&
+       mv test_insensitive/.FOO test_insensitive/.git &&
+       test_must_fail git -C test_insensitive fsmonitor--daemon status &&
+
+       # Verify that events were reported using on-disk spellings of the
+       # directories and files that we touched.  We may or may not get a
+       # trailing slash on modified directories.
+       #
+       egrep "^event: abc/?$"       ./insensitive.trace &&
+       egrep "^event: abc/def/?$"   ./insensitive.trace &&
+       egrep "^event: abc/def/xyz$" ./insensitive.trace
+'
+
 test_done