aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2024-03-28 14:08:47 -0700
committerJunio C Hamano <gitster@pobox.com>2024-03-28 14:14:48 -0700
commit012c8b307d339873bcdbbe95018ccfff904fc501 (patch)
treee535ef81bb9ac692bab506d2cfc967d8133b6987
parent5ea0176003f4a5f4a2bffbe87b6ba2365bf1c254 (diff)
downloadgit-012c8b307d339873bcdbbe95018ccfff904fc501.tar.gz
t4126: make sure a directory with SP at the end is usable
As afb31ad9 (t1010: fix unnoticed failure on Windows, 2021-12-11) said: On Microsoft Windows, a directory name should never end with a period. Quoting from Microsoft documentation[1]: Do not end a file or directory name with a space or a period. Although the underlying file system may support such names, the Windows shell and user interface does not. [1]: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file and the condition addressed by this change is exactly that. If the platform is unable to properly create these sample patches about a file that lives in a directory whose name ends with a SP, there is no point testing how "git apply" behaves there on the filesystem. Even though the ultimate purpose of "git apply" is to apply a patch and to update the filesystem entities, this particular test is mainly about parsing a patch on a funny pathname correctly, and even on a system that is incapable of checking out the resulting state correctly on its filesystem, at least the parsing can and should work fine. Rewrite the test to work inside the index without touching the filesystem. Helped-by: Jeff King <peff@peff.net> Helped-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xt/t4126-apply-empty.sh33
1 files changed, 18 insertions, 15 deletions
diff --git a/t/t4126-apply-empty.sh b/t/t4126-apply-empty.sh
index eaf0c5304a..2462cdf904 100755
--- a/t/t4126-apply-empty.sh
+++ b/t/t4126-apply-empty.sh
@@ -66,26 +66,29 @@ test_expect_success 'apply --index create' '
git diff --exit-code
'
-test_expect_success 'apply with no-contents and a funny pathname' '
- mkdir "funny " &&
- >"funny /empty" &&
- git add "funny /empty" &&
- git diff HEAD "funny /" >sample.patch &&
- git diff -R HEAD "funny /" >elpmas.patch &&
+test_expect_success 'parsing a patch with no-contents and a funny pathname' '
git reset --hard &&
- rm -fr "funny " &&
+ empty_blob=$(test_oid empty_blob) &&
+ echo "$empty_blob" >expect &&
- git apply --stat --check --apply sample.patch &&
- test_must_be_empty "funny /empty" &&
+ git update-index --add --cacheinfo "100644,$empty_blob,funny /empty" &&
+ git diff --cached HEAD -- "funny /" >sample.patch &&
+ git diff --cached -R HEAD -- "funny /" >elpmas.patch &&
+ git reset &&
- git apply --stat --check --apply elpmas.patch &&
- test_path_is_missing "funny /empty" &&
+ git apply --cached --stat --check --apply sample.patch &&
+ git rev-parse --verify ":funny /empty" >actual &&
+ test_cmp expect actual &&
- git apply -R --stat --check --apply elpmas.patch &&
- test_must_be_empty "funny /empty" &&
+ git apply --cached --stat --check --apply elpmas.patch &&
+ test_must_fail git rev-parse --verify ":funny /empty" &&
- git apply -R --stat --check --apply sample.patch &&
- test_path_is_missing "funny /empty"
+ git apply -R --cached --stat --check --apply elpmas.patch &&
+ git rev-parse --verify ":funny /empty" >actual &&
+ test_cmp expect actual &&
+
+ git apply -R --cached --stat --check --apply sample.patch &&
+ test_must_fail git rev-parse --verify ":funny /empty"
'
test_done