Re: [PATCH 02/23] t7527: test FS event reporing on macOS WRT case and Unicode
- From
Derrick Stolee <derrickstolee@github.com>
- Date
- Feb 24, 2022, 14:52 UTC
- Message-ID
- <c7ee2394-cda0-a997-3b9d-fb8c3d65b312@github.com>
- In-Reply-To
- <ad8cf6d9a47b61d9fe41a961466122be16e4f041.1644940773.git.gitgitgadget@gmail.com>
On 2/15/2022 10:59 AM, Jeff Hostetler via GitGitGadget wrote:
Show 9 quoted lines
> From: Jeff Hostetler <jeffhost@microsoft.com> > > 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?
Show 25 quoted lines
> +# 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?
Show 5 quoted lines
> + 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