On 2/15/2022 10:59 AM, Jeff Hostetler via GitGitGadget wrote: > From: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> > > Confirm that macOS FS events are reported with a normalized spelling. > > APFS (and/or HFS+) is case-insensitive. This means that case-independent > lookups ( [ -d .git ] and [ -d .GIT ] ) should both succeed. But that > doesn't tell us how FS events are reported if we try "rm -rf .git" versus > "rm -rf .GIT". Are the events reported using the on-disk spelling of the > pathname or in the spelling used by the command. Was this last sentence supposed to be a question? > NEEDSWORK: I was only able to test case. It would be nice to add tests "I was only able test the APFS case."? > that use different Unicode spellings/normalizations and understand the > differences between APFS and HFS+ in this area. We should confirm that > the spelling of the workdir paths that the daemon sends to clients are > always properly normalized. Are there any macOS experts out there who can help us find the answers to these questions? > +# Confirm that MacOS hides all of the Unicode normalization and/or > +# case folding from the FS events. That is, are the pathnames in the > +# FS events reported using the spelling on the disk or in the spelling > +# used by the other process. > +# > +# Note that we assume that the filesystem is set to case insensitive. > +# > +# NEEDSWORK: APFS handles Unicode and Unicode normalization > +# differently than HFS+. I only have an APFS partition, so > +# more testing here would be helpful. > +# > + > +# Rename .git using alternate spelling and confirm that the daemon > +# sees the event using the correct spelling and shutdown. > +test_expect_success UTF8_NFD_TO_NFC 'MacOS event spelling (rename .GIT)' ' > + test_when_finished "stop_daemon_delete_repo test_apfs" && > + > + git init test_apfs && > + start_daemon test_apfs && > + > + test_path_is_dir test_apfs/.git && > + test_path_is_dir test_apfs/.GIT && > + > + mv test_apfs/.GIT test_apfs/.FOO && > + sleep 1 && This sleep is unfortunate. Do we really need it? Or does this test become flaky without it? > + mv test_apfs/.FOO test_apfs/.git && > + > + test_must_fail git -C test_apfs fsmonitor--daemon status > +' > + This test is helpful in that it will help us discover if HFS+ or any future filesystem would break these assumptions. Thanks, -Stolee