{"thread":{"id":"55349","subject":"[PATCH] replace test -f with test_path_is_file","startedAt":"2021-03-19T09:52:55Z","lastAt":"2021-03-19T20:35:36Z","messageCount":6,"participants":["Krushnal Patel via GitGitGadget","Junio C Hamano","krush11 via GitGitGadget"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"419688","messageId":"pull.982.git.git.1616147527082.gitgitgadget@gmail.com","threadId":"55349","inReplyTo":null,"subject":"[PATCH] replace test -f with test_path_is_file","fromName":"Krushnal Patel via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2021-03-19T09:52:06Z","receivedAt":"2021-03-19T09:52:55Z","isPatch":true,"sender":{"key":"krushnalpatel11@gmail.com","avatar":null},"body":"From: krush11 <krushnalpatel11@gmail.com>\n\nAlthough  has the same functionality as test_path_is_file(), in\nthe case where test_path_is_file() fails, we get much better debugging\ninformation.\n\nReplace  with test_path_is_file so that future developers\nwill have a better experience debugging these test cases.\n\nSigned-off-by: Krushnal Patel  <krushnalpatel11@gmail.com>\n---\n    replace test -f with test_path_is_file\n    \n    Although has the same functionality as test_path_is_file(), in the case\n    where test_path_is_file() fails, we get much better debugging\n    information.\n    \n    Replace with test_path_is_file so that future developers will have a\n    better experience debugging these test cases.\n\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-982%2Fkrush11%2Fnext-v1\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-982/krush11/next-v1\nPull-Request: https://github.com/git/git/pull/982\n\n t/t7300-clean.sh | 276 +++++++++++++++++++++++------------------------\n 1 file changed, 138 insertions(+), 138 deletions(-)\n\ndiff --git a/t/t7300-clean.sh b/t/t7300-clean.sh\nindex a74816ca8b46..a599c4210085 100755\n--- a/t/t7300-clean.sh\n+++ b/t/t7300-clean.sh\n@@ -28,15 +28,15 @@ test_expect_success 'git clean with skip-worktree .gitignore' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so &&\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so &&\n \tgit update-index --no-skip-worktree .gitignore &&\n \tgit checkout .gitignore\n '\n@@ -46,15 +46,15 @@ test_expect_success 'git clean' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -63,15 +63,15 @@ test_expect_success 'git clean src/' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean src/ &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -80,15 +80,15 @@ test_expect_success 'git clean src/ src/' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean src/ src/ &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -97,16 +97,16 @@ test_expect_success 'git clean with prefix' '\n \tmkdir -p build docs src/test &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c &&\n \t(cd src/ && git clean) &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f src/test/1.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file src/test/1.c &&\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -162,16 +162,16 @@ test_expect_success 'git clean -d with prefix and path' '\n \tmkdir -p build docs src/feature &&\n \ttouch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&\n \t(cd src/ && git clean -d feature/) &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n \ttest ! -f src/feature/file.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -181,16 +181,16 @@ test_expect_success SYMLINKS 'git clean symbolic link' '\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tln -s docs/manual.txt src/part4.c &&\n \tgit clean &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n \ttest ! -f src/part4.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -198,13 +198,13 @@ test_expect_success 'git clean with wildcard' '\n \n \ttouch a.clean b.clean other.c &&\n \tgit clean \"*.clean\" &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.clean &&\n \ttest ! -f b.clean &&\n-\ttest -f other.c\n+\ttest_path_is_file other.c\n \n '\n \n@@ -213,15 +213,15 @@ test_expect_success 'git clean -n' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -n &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -230,15 +230,15 @@ test_expect_success 'git clean -d' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n \ttest ! -d docs &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -247,16 +247,16 @@ test_expect_success 'git clean -d src/ examples/' '\n \tmkdir -p build docs examples &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&\n \tgit clean -d src/ examples/ &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n \ttest ! -f examples/1.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -265,15 +265,15 @@ test_expect_success 'git clean -x' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -x &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n+\ttest_path_is_file docs/manual.txt &&\n \ttest ! -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -282,10 +282,10 @@ test_expect_success 'git clean -d -x' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -x &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n \ttest ! -d docs &&\n@@ -299,12 +299,12 @@ test_expect_success 'git clean -d -x with ignored tracked directory' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -x -e src &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n-\ttest -f src/part3.c &&\n+\ttest_path_is_file src/part3.c &&\n \ttest ! -d docs &&\n \ttest ! -f obj.o &&\n \ttest ! -d build\n@@ -316,15 +316,15 @@ test_expect_success 'git clean -X' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -X &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n+\ttest_path_is_file docs/manual.txt &&\n \ttest ! -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -333,13 +333,13 @@ test_expect_success 'git clean -d -X' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -X &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n+\ttest_path_is_file docs/manual.txt &&\n \ttest ! -f obj.o &&\n \ttest ! -d build\n \n@@ -350,13 +350,13 @@ test_expect_success 'git clean -d -X with ignored tracked directory' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -X -e src &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n+\ttest_path_is_file docs/manual.txt &&\n \ttest ! -f obj.o &&\n \ttest ! -d build\n \n@@ -381,29 +381,29 @@ test_expect_success 'clean.requireForce and -n' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -n &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n test_expect_success 'clean.requireForce and -f' '\n \n \tgit clean -f &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -446,10 +446,10 @@ test_expect_success 'nested git work tree' '\n \t\ttest_commit deeply.nested deeper.world\n \t) &&\n \tgit clean -f -d &&\n-\ttest -f foo/.git/index &&\n-\ttest -f foo/hello.world &&\n-\ttest -f baz/boo/.git/index &&\n-\ttest -f baz/boo/deeper.world &&\n+\ttest_path_is_file foo/.git/index &&\n+\ttest_path_is_file foo/hello.world &&\n+\ttest_path_is_file baz/boo/.git/index &&\n+\ttest_path_is_file baz/boo/deeper.world &&\n \t! test -d bar\n '\n \n\nbase-commit: 576ba9dcdaf1007243f5a5cb4bf1a1e7b8fcf850\n-- \ngitgitgadget\n"},{"id":"419724","messageId":"xmqqr1kbm34j.fsf@gitster.g","threadId":"55349","inReplyTo":"pull.982.git.git.1616147527082.gitgitgadget@gmail.com","subject":"Re: [PATCH] replace test -f with test_path_is_file","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-03-19T18:04:28Z","receivedAt":"2021-03-19T18:05:11Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Krushnal Patel via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: krush11 <krushnalpatel11@gmail.com>\n>\n> Although  has the same functionality as test_path_is_file(), in\n> the case where test_path_is_file() fails, we get much better debugging\n> information.\n>\n> Replace  with test_path_is_file so that future developers\n> will have a better experience debugging these test cases.\n\nWhile this change is not wrong per-se, in the context of this test\nscript, I think the original use of \"test -f\" is not quite right to\nbegin with.  These are all \"even after running 'git clean', these\npaths should exist without getting removed by mistake\", so the\nintent of these \"test -f\" invocations are actually \"test -e\".\n\nSimilarly, the invocations of \"test ! -f\" we see (and there also is\nat least one \"! test -d\") mean to say \"these paths should be gone as\nthe result of running 'git clean'\".  If by some accident a directory\nexists at the path that is checked with \"test ! -f\" due to a bug in\n'git clean', these tests will not catch such a bug, because a directory\ndoes not pass \"test -f\".\n\nSo most likely these negative tests this patch does not convert are\nbetter off being spelled as \"! test -e\", too.\n\nIt would be more appropriate to use test_path_exists and\ntest_path_is_missing to replace these \"must exist as a file\" and\n\"must not exist as a file\".\n\nThanks.\n"},{"id":"419728","messageId":"pull.982.v2.git.git.1616181893.gitgitgadget@gmail.com","threadId":"55349","inReplyTo":"pull.982.git.git.1616147527082.gitgitgadget@gmail.com","subject":"[PATCH v2 0/2] replace test -f with test_path_is_file","fromName":"Krushnal Patel via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2021-03-19T19:24:51Z","receivedAt":"2021-03-19T19:25:40Z","isPatch":true,"sender":{"key":"krushnalpatel11@gmail.com","avatar":null},"body":"Although has the same functionality as test_path_is_file(), in the case\nwhere test_path_is_file() fails, we get much better debugging information.\n\nReplace with test_path_is_file so that future developers will have a better\nexperience debugging these test cases.\n\nkrush11 (2):\n  replace test -f with test_path_is_file\n  replaced test -f and test ! -f\n\n t/t7300-clean.sh | 376 +++++++++++++++++++++++------------------------\n 1 file changed, 188 insertions(+), 188 deletions(-)\n\n\nbase-commit: 576ba9dcdaf1007243f5a5cb4bf1a1e7b8fcf850\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-982%2Fkrush11%2Fnext-v2\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-982/krush11/next-v2\nPull-Request: https://github.com/git/git/pull/982\n\nRange-diff vs v1:\n\n 1:  e5f92e3882cd = 1:  e5f92e3882cd replace test -f with test_path_is_file\n -:  ------------ > 2:  a31a147a34f8 replaced test -f and test ! -f\n\n-- \ngitgitgadget\n"},{"id":"419729","messageId":"e5f92e3882cd32627d1dcba1271263c93b699b21.1616181893.git.gitgitgadget@gmail.com","threadId":"55349","inReplyTo":"pull.982.v2.git.git.1616181893.gitgitgadget@gmail.com","subject":"[PATCH v2 1/2] replace test -f with test_path_is_file","fromName":"krush11 via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2021-03-19T19:24:52Z","receivedAt":"2021-03-19T19:25:41Z","isPatch":true,"sender":{"key":"name:krush11","avatar":null},"body":"From: krush11 <krushnalpatel11@gmail.com>\n\nAlthough  has the same functionality as test_path_is_file(), in\nthe case where test_path_is_file() fails, we get much better debugging\ninformation.\n\nReplace  with test_path_is_file so that future developers\nwill have a better experience debugging these test cases.\n\nSigned-off-by: Krushnal Patel  <krushnalpatel11@gmail.com>\n---\n t/t7300-clean.sh | 276 +++++++++++++++++++++++------------------------\n 1 file changed, 138 insertions(+), 138 deletions(-)\n\ndiff --git a/t/t7300-clean.sh b/t/t7300-clean.sh\nindex a74816ca8b46..a599c4210085 100755\n--- a/t/t7300-clean.sh\n+++ b/t/t7300-clean.sh\n@@ -28,15 +28,15 @@ test_expect_success 'git clean with skip-worktree .gitignore' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so &&\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so &&\n \tgit update-index --no-skip-worktree .gitignore &&\n \tgit checkout .gitignore\n '\n@@ -46,15 +46,15 @@ test_expect_success 'git clean' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -63,15 +63,15 @@ test_expect_success 'git clean src/' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean src/ &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -80,15 +80,15 @@ test_expect_success 'git clean src/ src/' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean src/ src/ &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -97,16 +97,16 @@ test_expect_success 'git clean with prefix' '\n \tmkdir -p build docs src/test &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c &&\n \t(cd src/ && git clean) &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f src/test/1.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file src/test/1.c &&\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -162,16 +162,16 @@ test_expect_success 'git clean -d with prefix and path' '\n \tmkdir -p build docs src/feature &&\n \ttouch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&\n \t(cd src/ && git clean -d feature/) &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n \ttest ! -f src/feature/file.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -181,16 +181,16 @@ test_expect_success SYMLINKS 'git clean symbolic link' '\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tln -s docs/manual.txt src/part4.c &&\n \tgit clean &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n \ttest ! -f src/part4.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -198,13 +198,13 @@ test_expect_success 'git clean with wildcard' '\n \n \ttouch a.clean b.clean other.c &&\n \tgit clean \"*.clean\" &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.clean &&\n \ttest ! -f b.clean &&\n-\ttest -f other.c\n+\ttest_path_is_file other.c\n \n '\n \n@@ -213,15 +213,15 @@ test_expect_success 'git clean -n' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -n &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -230,15 +230,15 @@ test_expect_success 'git clean -d' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n \ttest ! -d docs &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -247,16 +247,16 @@ test_expect_success 'git clean -d src/ examples/' '\n \tmkdir -p build docs examples &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&\n \tgit clean -d src/ examples/ &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n \ttest ! -f examples/1.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -265,15 +265,15 @@ test_expect_success 'git clean -x' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -x &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n+\ttest_path_is_file docs/manual.txt &&\n \ttest ! -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -282,10 +282,10 @@ test_expect_success 'git clean -d -x' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -x &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n \ttest ! -d docs &&\n@@ -299,12 +299,12 @@ test_expect_success 'git clean -d -x with ignored tracked directory' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -x -e src &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n-\ttest -f src/part3.c &&\n+\ttest_path_is_file src/part3.c &&\n \ttest ! -d docs &&\n \ttest ! -f obj.o &&\n \ttest ! -d build\n@@ -316,15 +316,15 @@ test_expect_success 'git clean -X' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -X &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n+\ttest_path_is_file docs/manual.txt &&\n \ttest ! -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -333,13 +333,13 @@ test_expect_success 'git clean -d -X' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -X &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n+\ttest_path_is_file docs/manual.txt &&\n \ttest ! -f obj.o &&\n \ttest ! -d build\n \n@@ -350,13 +350,13 @@ test_expect_success 'git clean -d -X with ignored tracked directory' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -X -e src &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n+\ttest_path_is_file docs/manual.txt &&\n \ttest ! -f obj.o &&\n \ttest ! -d build\n \n@@ -381,29 +381,29 @@ test_expect_success 'clean.requireForce and -n' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -n &&\n-\ttest -f Makefile &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n-\ttest -f a.out &&\n-\ttest -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file Makefile &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n+\ttest_path_is_file a.out &&\n+\ttest_path_is_file src/part3.c &&\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n test_expect_success 'clean.requireForce and -f' '\n \n \tgit clean -f &&\n-\ttest -f README &&\n-\ttest -f src/part1.c &&\n-\ttest -f src/part2.c &&\n+\ttest_path_is_file README &&\n+\ttest_path_is_file src/part1.c &&\n+\ttest_path_is_file src/part2.c &&\n \ttest ! -f a.out &&\n \ttest ! -f src/part3.c &&\n-\ttest -f docs/manual.txt &&\n-\ttest -f obj.o &&\n-\ttest -f build/lib.so\n+\ttest_path_is_file docs/manual.txt &&\n+\ttest_path_is_file obj.o &&\n+\ttest_path_is_file build/lib.so\n \n '\n \n@@ -446,10 +446,10 @@ test_expect_success 'nested git work tree' '\n \t\ttest_commit deeply.nested deeper.world\n \t) &&\n \tgit clean -f -d &&\n-\ttest -f foo/.git/index &&\n-\ttest -f foo/hello.world &&\n-\ttest -f baz/boo/.git/index &&\n-\ttest -f baz/boo/deeper.world &&\n+\ttest_path_is_file foo/.git/index &&\n+\ttest_path_is_file foo/hello.world &&\n+\ttest_path_is_file baz/boo/.git/index &&\n+\ttest_path_is_file baz/boo/deeper.world &&\n \t! test -d bar\n '\n \n-- \ngitgitgadget\n\n"},{"id":"419730","messageId":"a31a147a34f809cb1eaa973890c7d50eb5a3ffb8.1616181893.git.gitgitgadget@gmail.com","threadId":"55349","inReplyTo":"pull.982.v2.git.git.1616181893.gitgitgadget@gmail.com","subject":"[PATCH v2 2/2] replaced test -f and test ! -f","fromName":"krush11 via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2021-03-19T19:24:53Z","receivedAt":"2021-03-19T19:25:41Z","isPatch":true,"sender":{"key":"name:krush11","avatar":null},"body":"From: krush11 <krushnalpatel11@gmail.com>\n\ntest -f relates to 'must exist as a file' and similarly,\ntest ! -f relates to 'must not exist as a file'.\nSo, test -f can be replaced with test_path_exists and test ! -f can be replaced by test_path_is_missing.\n\nSigned-off-by: Krushnal Patel <krushnalpatel11@gmail.com>\n---\n t/t7300-clean.sh | 376 +++++++++++++++++++++++------------------------\n 1 file changed, 188 insertions(+), 188 deletions(-)\n\ndiff --git a/t/t7300-clean.sh b/t/t7300-clean.sh\nindex a599c4210085..d1777ff084e6 100755\n--- a/t/t7300-clean.sh\n+++ b/t/t7300-clean.sh\n@@ -28,15 +28,15 @@ test_expect_success 'git clean with skip-worktree .gitignore' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest ! -f a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so &&\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_is_missing a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so &&\n \tgit update-index --no-skip-worktree .gitignore &&\n \tgit checkout .gitignore\n '\n@@ -46,15 +46,15 @@ test_expect_success 'git clean' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest ! -f a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_is_missing a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -63,15 +63,15 @@ test_expect_success 'git clean src/' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean src/ &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -80,15 +80,15 @@ test_expect_success 'git clean src/ src/' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean src/ src/ &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -97,16 +97,16 @@ test_expect_success 'git clean with prefix' '\n \tmkdir -p build docs src/test &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c &&\n \t(cd src/ && git clean) &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest_path_is_file src/test/1.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_exists src/test/1.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -162,16 +162,16 @@ test_expect_success 'git clean -d with prefix and path' '\n \tmkdir -p build docs src/feature &&\n \ttouch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&\n \t(cd src/ && git clean -d feature/) &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest_path_is_file src/part3.c &&\n-\ttest ! -f src/feature/file.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_exists src/part3.c &&\n+\ttest_path_is_missing src/feature/file.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -181,16 +181,16 @@ test_expect_success SYMLINKS 'git clean symbolic link' '\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tln -s docs/manual.txt src/part4.c &&\n \tgit clean &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest ! -f a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest ! -f src/part4.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_is_missing a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_is_missing src/part4.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -198,13 +198,13 @@ test_expect_success 'git clean with wildcard' '\n \n \ttouch a.clean b.clean other.c &&\n \tgit clean \"*.clean\" &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest ! -f a.clean &&\n-\ttest ! -f b.clean &&\n-\ttest_path_is_file other.c\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_is_missing a.clean &&\n+\ttest_path_is_missing b.clean &&\n+\ttest_path_exists other.c\n \n '\n \n@@ -213,15 +213,15 @@ test_expect_success 'git clean -n' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -n &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest_path_is_file src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_exists src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -230,15 +230,15 @@ test_expect_success 'git clean -d' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest ! -f a.out &&\n-\ttest ! -f src/part3.c &&\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_is_missing a.out &&\n+\ttest_path_is_missing src/part3.c &&\n \ttest ! -d docs &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -247,16 +247,16 @@ test_expect_success 'git clean -d src/ examples/' '\n \tmkdir -p build docs examples &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&\n \tgit clean -d src/ examples/ &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest ! -f examples/1.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_is_missing examples/1.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -265,15 +265,15 @@ test_expect_success 'git clean -x' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -x &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest ! -f a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest ! -f obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_is_missing a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_is_missing obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -282,14 +282,14 @@ test_expect_success 'git clean -d -x' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -x &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest ! -f a.out &&\n-\ttest ! -f src/part3.c &&\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_is_missing a.out &&\n+\ttest_path_is_missing src/part3.c &&\n \ttest ! -d docs &&\n-\ttest ! -f obj.o &&\n+\ttest_path_is_missing obj.o &&\n \ttest ! -d build\n \n '\n@@ -299,14 +299,14 @@ test_expect_success 'git clean -d -x with ignored tracked directory' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -x -e src &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest ! -f a.out &&\n-\ttest_path_is_file src/part3.c &&\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_is_missing a.out &&\n+\ttest_path_exists src/part3.c &&\n \ttest ! -d docs &&\n-\ttest ! -f obj.o &&\n+\ttest_path_is_missing obj.o &&\n \ttest ! -d build\n \n '\n@@ -316,15 +316,15 @@ test_expect_success 'git clean -X' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -X &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest_path_is_file src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest ! -f obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_exists src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_is_missing obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -333,14 +333,14 @@ test_expect_success 'git clean -d -X' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -X &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest_path_is_file src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest ! -f obj.o &&\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_exists src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_is_missing obj.o &&\n \ttest ! -d build\n \n '\n@@ -350,14 +350,14 @@ test_expect_success 'git clean -d -X with ignored tracked directory' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -d -X -e src &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest ! -f obj.o &&\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_is_missing obj.o &&\n \ttest ! -d build\n \n '\n@@ -381,29 +381,29 @@ test_expect_success 'clean.requireForce and -n' '\n \tmkdir -p build docs &&\n \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n \tgit clean -n &&\n-\ttest_path_is_file Makefile &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest_path_is_file a.out &&\n-\ttest_path_is_file src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists Makefile &&\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_exists a.out &&\n+\ttest_path_exists src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n test_expect_success 'clean.requireForce and -f' '\n \n \tgit clean -f &&\n-\ttest_path_is_file README &&\n-\ttest_path_is_file src/part1.c &&\n-\ttest_path_is_file src/part2.c &&\n-\ttest ! -f a.out &&\n-\ttest ! -f src/part3.c &&\n-\ttest_path_is_file docs/manual.txt &&\n-\ttest_path_is_file obj.o &&\n-\ttest_path_is_file build/lib.so\n+\ttest_path_exists README &&\n+\ttest_path_exists src/part1.c &&\n+\ttest_path_exists src/part2.c &&\n+\ttest_path_is_missing a.out &&\n+\ttest_path_is_missing src/part3.c &&\n+\ttest_path_exists docs/manual.txt &&\n+\ttest_path_exists obj.o &&\n+\ttest_path_exists build/lib.so\n \n '\n \n@@ -446,10 +446,10 @@ test_expect_success 'nested git work tree' '\n \t\ttest_commit deeply.nested deeper.world\n \t) &&\n \tgit clean -f -d &&\n-\ttest_path_is_file foo/.git/index &&\n-\ttest_path_is_file foo/hello.world &&\n-\ttest_path_is_file baz/boo/.git/index &&\n-\ttest_path_is_file baz/boo/deeper.world &&\n+\ttest_path_exists foo/.git/index &&\n+\ttest_path_exists foo/hello.world &&\n+\ttest_path_exists baz/boo/.git/index &&\n+\ttest_path_exists baz/boo/deeper.world &&\n \t! test -d bar\n '\n \n@@ -488,12 +488,12 @@ test_expect_success 'should not clean submodules' '\n \tgit checkout before_sub2 &&\n \t>to_clean/should_clean.this &&\n \tgit clean -f -d &&\n-\ttest_path_is_file repo/.git/index &&\n-\ttest_path_is_file repo/hello.world &&\n-\ttest_path_is_file sub1/.git &&\n-\ttest_path_is_file sub1/hello.world &&\n-\ttest_path_is_file sub2/.git &&\n-\ttest_path_is_file sub2/hello.world &&\n+\ttest_path_exists repo/.git/index &&\n+\ttest_path_exists repo/hello.world &&\n+\ttest_path_exists sub1/.git &&\n+\ttest_path_exists sub1/hello.world &&\n+\ttest_path_exists sub2/.git &&\n+\ttest_path_exists sub2/hello.world &&\n \ttest_path_is_missing to_clean\n '\n \n@@ -506,8 +506,8 @@ test_expect_success POSIXPERM,SANITY 'should avoid cleaning possible submodules'\n \tchmod 0 possible_sub1/.git &&\n \t>to_clean/should_clean.this &&\n \tgit clean -f -d &&\n-\ttest_path_is_file possible_sub1/.git &&\n-\ttest_path_is_file possible_sub1/hello.world &&\n+\ttest_path_exists possible_sub1/.git &&\n+\ttest_path_exists possible_sub1/hello.world &&\n \ttest_path_is_missing to_clean\n '\n \n@@ -517,7 +517,7 @@ test_expect_success 'nested (empty) git should be kept' '\n \tmkdir to_clean &&\n \t>to_clean/should_clean.this &&\n \tgit clean -f -d &&\n-\ttest_path_is_file empty_repo/.git/HEAD &&\n+\ttest_path_exists empty_repo/.git/HEAD &&\n \ttest_path_is_missing to_clean\n '\n \n@@ -559,9 +559,9 @@ test_expect_success 'giving path in nested git work tree will NOT remove it' '\n \t\ttest_commit msg bar/baz/hello.world\n \t) &&\n \tgit clean -f -d repo/bar/baz &&\n-\ttest_path_is_file repo/.git/HEAD &&\n+\ttest_path_exists repo/.git/HEAD &&\n \ttest_path_is_dir repo/bar/ &&\n-\ttest_path_is_file repo/bar/baz/hello.world\n+\ttest_path_exists repo/bar/baz/hello.world\n '\n \n test_expect_success 'giving path to nested .git will not remove it' '\n@@ -573,7 +573,7 @@ test_expect_success 'giving path to nested .git will not remove it' '\n \t\ttest_commit msg hello.world\n \t) &&\n \tgit clean -f -d repo/.git &&\n-\ttest_path_is_file repo/.git/HEAD &&\n+\ttest_path_exists repo/.git/HEAD &&\n \ttest_path_is_dir repo/.git/refs &&\n \ttest_path_is_dir repo/.git/objects &&\n \ttest_path_is_dir untracked/\n@@ -589,7 +589,7 @@ test_expect_success 'giving path to nested .git/ will NOT remove contents' '\n \t) &&\n \tgit clean -f -d repo/.git/ &&\n \ttest_path_is_dir repo/.git &&\n-\ttest_path_is_file repo/.git/HEAD &&\n+\ttest_path_exists repo/.git/HEAD &&\n \ttest_path_is_dir untracked/\n '\n \n@@ -663,11 +663,11 @@ test_expect_success 'git clean -d skips untracked dirs containing ignored files'\n \ttouch foo/bar foo/baz foo/a/aa/ignoreme foo/b/ignoreme foo/b/bb/1 foo/b/bb/2 &&\n \tgit clean -df &&\n \ttest_path_is_dir foo &&\n-\ttest_path_is_file foo/bar &&\n+\ttest_path_exists foo/bar &&\n \ttest_path_is_missing foo/baz &&\n-\ttest_path_is_file foo/a/aa/ignoreme &&\n+\ttest_path_exists foo/a/aa/ignoreme &&\n \ttest_path_is_missing foo/a/aa/aaa &&\n-\ttest_path_is_file foo/b/ignoreme &&\n+\ttest_path_exists foo/b/ignoreme &&\n \ttest_path_is_missing foo/b/bb\n '\n \n@@ -688,9 +688,9 @@ test_expect_success 'git clean -d skips nested repo containing ignored files' '\n \n \tgit clean -fd &&\n \n-\ttest_path_is_file nested-repo-with-ignored-file/.git/index &&\n-\ttest_path_is_file nested-repo-with-ignored-file/ignoreme &&\n-\ttest_path_is_file nested-repo-with-ignored-file/file\n+\ttest_path_exists nested-repo-with-ignored-file/.git/index &&\n+\ttest_path_exists nested-repo-with-ignored-file/ignoreme &&\n+\ttest_path_exists nested-repo-with-ignored-file/file\n '\n \n test_expect_success 'git clean handles being told what to clean' '\n-- \ngitgitgadget\n"},{"id":"419734","messageId":"xmqq5z1mnaqw.fsf@gitster.g","threadId":"55349","inReplyTo":"a31a147a34f809cb1eaa973890c7d50eb5a3ffb8.1616181893.git.gitgitgadget@gmail.com","subject":"Re: [PATCH v2 2/2] replaced test -f and test ! -f","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-03-19T20:34:31Z","receivedAt":"2021-03-19T20:35:36Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"krush11 via GitGitGadget\" <gitgitgadget@gmail.com> writes:\n\n> From: krush11 <krushnalpatel11@gmail.com>\n>\n> test -f relates to 'must exist as a file' and similarly,\n> test ! -f relates to 'must not exist as a file'.\n> So, test -f can be replaced with test_path_exists and test ! -f can be replaced by test_path_is_missing.\n>\n> Signed-off-by: Krushnal Patel <krushnalpatel11@gmail.com>\n> ---\n>  t/t7300-clean.sh | 376 +++++++++++++++++++++++------------------------\n>  1 file changed, 188 insertions(+), 188 deletions(-)\n\nA few comments.\n\n * Your \"From:\" authorship and \"Signed-off-by:\" authorship should\n   match.  As Documentation/SubmittingPatches states, we require\n   real name for sign-off, you'd need to correct the \"From:\" side.\n\n * I do not think it makes sense for this topic to be two-patch\n   series.  We do nto want to first go from \"test -f\" to\n   \"test_path_is_file\" and then to \"test_path_exists\", while doing\n   nothing to \"! test -f\" in the first step and later to \"missing\".\n   Perhaps squash them into a single patch with an updated message\n   and force push before re-submitting the GitHub PR?\n\n * The rationale given for this step does not make much sense.  The\n   first two sentences are not wrong per-se, but we should make it\n   clear that we are NOT claiming that \"test -f\" is used for \"must\n   not be missing\" in general.  E.g.\n\n\tThe tests in this script use \"test -f\" when it wants to make\n\tsure a path that \"git clean\" should not remove is still\n\tthere, and \"! test -f\" (or \"test ! -f\") when it wants to\n\tmake sure a path that should be removed is indeed gone.\n\n\tReplace them with test_path_exists and test_path_is_missing\n\tto clarify the expectation.  It also makes any failed\n\texpectation stand out and easier to spot to se these test\n\thelpers.\n\n   or something like that, perhaps.\n\nThanks.\n\n> diff --git a/t/t7300-clean.sh b/t/t7300-clean.sh\n> index a599c4210085..d1777ff084e6 100755\n> --- a/t/t7300-clean.sh\n> +++ b/t/t7300-clean.sh\n> @@ -28,15 +28,15 @@ test_expect_success 'git clean with skip-worktree .gitignore' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest ! -f a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so &&\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_is_missing a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so &&\n>  \tgit update-index --no-skip-worktree .gitignore &&\n>  \tgit checkout .gitignore\n>  '\n> @@ -46,15 +46,15 @@ test_expect_success 'git clean' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest ! -f a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_is_missing a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -63,15 +63,15 @@ test_expect_success 'git clean src/' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean src/ &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -80,15 +80,15 @@ test_expect_success 'git clean src/ src/' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean src/ src/ &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -97,16 +97,16 @@ test_expect_success 'git clean with prefix' '\n>  \tmkdir -p build docs src/test &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c &&\n>  \t(cd src/ && git clean) &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest_path_is_file src/test/1.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_exists src/test/1.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -162,16 +162,16 @@ test_expect_success 'git clean -d with prefix and path' '\n>  \tmkdir -p build docs src/feature &&\n>  \ttouch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&\n>  \t(cd src/ && git clean -d feature/) &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest_path_is_file src/part3.c &&\n> -\ttest ! -f src/feature/file.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_exists src/part3.c &&\n> +\ttest_path_is_missing src/feature/file.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -181,16 +181,16 @@ test_expect_success SYMLINKS 'git clean symbolic link' '\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tln -s docs/manual.txt src/part4.c &&\n>  \tgit clean &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest ! -f a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest ! -f src/part4.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_is_missing a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_is_missing src/part4.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -198,13 +198,13 @@ test_expect_success 'git clean with wildcard' '\n>  \n>  \ttouch a.clean b.clean other.c &&\n>  \tgit clean \"*.clean\" &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest ! -f a.clean &&\n> -\ttest ! -f b.clean &&\n> -\ttest_path_is_file other.c\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_is_missing a.clean &&\n> +\ttest_path_is_missing b.clean &&\n> +\ttest_path_exists other.c\n>  \n>  '\n>  \n> @@ -213,15 +213,15 @@ test_expect_success 'git clean -n' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean -n &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest_path_is_file src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_exists src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -230,15 +230,15 @@ test_expect_success 'git clean -d' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean -d &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest ! -f a.out &&\n> -\ttest ! -f src/part3.c &&\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_is_missing a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n>  \ttest ! -d docs &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -247,16 +247,16 @@ test_expect_success 'git clean -d src/ examples/' '\n>  \tmkdir -p build docs examples &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&\n>  \tgit clean -d src/ examples/ &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest ! -f examples/1.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_is_missing examples/1.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -265,15 +265,15 @@ test_expect_success 'git clean -x' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean -x &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest ! -f a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest ! -f obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_is_missing a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_is_missing obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -282,14 +282,14 @@ test_expect_success 'git clean -d -x' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean -d -x &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest ! -f a.out &&\n> -\ttest ! -f src/part3.c &&\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_is_missing a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n>  \ttest ! -d docs &&\n> -\ttest ! -f obj.o &&\n> +\ttest_path_is_missing obj.o &&\n>  \ttest ! -d build\n>  \n>  '\n> @@ -299,14 +299,14 @@ test_expect_success 'git clean -d -x with ignored tracked directory' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean -d -x -e src &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest ! -f a.out &&\n> -\ttest_path_is_file src/part3.c &&\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_is_missing a.out &&\n> +\ttest_path_exists src/part3.c &&\n>  \ttest ! -d docs &&\n> -\ttest ! -f obj.o &&\n> +\ttest_path_is_missing obj.o &&\n>  \ttest ! -d build\n>  \n>  '\n> @@ -316,15 +316,15 @@ test_expect_success 'git clean -X' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean -X &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest_path_is_file src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest ! -f obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_exists src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_is_missing obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -333,14 +333,14 @@ test_expect_success 'git clean -d -X' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean -d -X &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest_path_is_file src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest ! -f obj.o &&\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_exists src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_is_missing obj.o &&\n>  \ttest ! -d build\n>  \n>  '\n> @@ -350,14 +350,14 @@ test_expect_success 'git clean -d -X with ignored tracked directory' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean -d -X -e src &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest ! -f obj.o &&\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_is_missing obj.o &&\n>  \ttest ! -d build\n>  \n>  '\n> @@ -381,29 +381,29 @@ test_expect_success 'clean.requireForce and -n' '\n>  \tmkdir -p build docs &&\n>  \ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n>  \tgit clean -n &&\n> -\ttest_path_is_file Makefile &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest_path_is_file a.out &&\n> -\ttest_path_is_file src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists Makefile &&\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_exists a.out &&\n> +\ttest_path_exists src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n>  test_expect_success 'clean.requireForce and -f' '\n>  \n>  \tgit clean -f &&\n> -\ttest_path_is_file README &&\n> -\ttest_path_is_file src/part1.c &&\n> -\ttest_path_is_file src/part2.c &&\n> -\ttest ! -f a.out &&\n> -\ttest ! -f src/part3.c &&\n> -\ttest_path_is_file docs/manual.txt &&\n> -\ttest_path_is_file obj.o &&\n> -\ttest_path_is_file build/lib.so\n> +\ttest_path_exists README &&\n> +\ttest_path_exists src/part1.c &&\n> +\ttest_path_exists src/part2.c &&\n> +\ttest_path_is_missing a.out &&\n> +\ttest_path_is_missing src/part3.c &&\n> +\ttest_path_exists docs/manual.txt &&\n> +\ttest_path_exists obj.o &&\n> +\ttest_path_exists build/lib.so\n>  \n>  '\n>  \n> @@ -446,10 +446,10 @@ test_expect_success 'nested git work tree' '\n>  \t\ttest_commit deeply.nested deeper.world\n>  \t) &&\n>  \tgit clean -f -d &&\n> -\ttest_path_is_file foo/.git/index &&\n> -\ttest_path_is_file foo/hello.world &&\n> -\ttest_path_is_file baz/boo/.git/index &&\n> -\ttest_path_is_file baz/boo/deeper.world &&\n> +\ttest_path_exists foo/.git/index &&\n> +\ttest_path_exists foo/hello.world &&\n> +\ttest_path_exists baz/boo/.git/index &&\n> +\ttest_path_exists baz/boo/deeper.world &&\n>  \t! test -d bar\n>  '\n>  \n> @@ -488,12 +488,12 @@ test_expect_success 'should not clean submodules' '\n>  \tgit checkout before_sub2 &&\n>  \t>to_clean/should_clean.this &&\n>  \tgit clean -f -d &&\n> -\ttest_path_is_file repo/.git/index &&\n> -\ttest_path_is_file repo/hello.world &&\n> -\ttest_path_is_file sub1/.git &&\n> -\ttest_path_is_file sub1/hello.world &&\n> -\ttest_path_is_file sub2/.git &&\n> -\ttest_path_is_file sub2/hello.world &&\n> +\ttest_path_exists repo/.git/index &&\n> +\ttest_path_exists repo/hello.world &&\n> +\ttest_path_exists sub1/.git &&\n> +\ttest_path_exists sub1/hello.world &&\n> +\ttest_path_exists sub2/.git &&\n> +\ttest_path_exists sub2/hello.world &&\n>  \ttest_path_is_missing to_clean\n>  '\n>  \n> @@ -506,8 +506,8 @@ test_expect_success POSIXPERM,SANITY 'should avoid cleaning possible submodules'\n>  \tchmod 0 possible_sub1/.git &&\n>  \t>to_clean/should_clean.this &&\n>  \tgit clean -f -d &&\n> -\ttest_path_is_file possible_sub1/.git &&\n> -\ttest_path_is_file possible_sub1/hello.world &&\n> +\ttest_path_exists possible_sub1/.git &&\n> +\ttest_path_exists possible_sub1/hello.world &&\n>  \ttest_path_is_missing to_clean\n>  '\n>  \n> @@ -517,7 +517,7 @@ test_expect_success 'nested (empty) git should be kept' '\n>  \tmkdir to_clean &&\n>  \t>to_clean/should_clean.this &&\n>  \tgit clean -f -d &&\n> -\ttest_path_is_file empty_repo/.git/HEAD &&\n> +\ttest_path_exists empty_repo/.git/HEAD &&\n>  \ttest_path_is_missing to_clean\n>  '\n>  \n> @@ -559,9 +559,9 @@ test_expect_success 'giving path in nested git work tree will NOT remove it' '\n>  \t\ttest_commit msg bar/baz/hello.world\n>  \t) &&\n>  \tgit clean -f -d repo/bar/baz &&\n> -\ttest_path_is_file repo/.git/HEAD &&\n> +\ttest_path_exists repo/.git/HEAD &&\n>  \ttest_path_is_dir repo/bar/ &&\n> -\ttest_path_is_file repo/bar/baz/hello.world\n> +\ttest_path_exists repo/bar/baz/hello.world\n>  '\n>  \n>  test_expect_success 'giving path to nested .git will not remove it' '\n> @@ -573,7 +573,7 @@ test_expect_success 'giving path to nested .git will not remove it' '\n>  \t\ttest_commit msg hello.world\n>  \t) &&\n>  \tgit clean -f -d repo/.git &&\n> -\ttest_path_is_file repo/.git/HEAD &&\n> +\ttest_path_exists repo/.git/HEAD &&\n>  \ttest_path_is_dir repo/.git/refs &&\n>  \ttest_path_is_dir repo/.git/objects &&\n>  \ttest_path_is_dir untracked/\n> @@ -589,7 +589,7 @@ test_expect_success 'giving path to nested .git/ will NOT remove contents' '\n>  \t) &&\n>  \tgit clean -f -d repo/.git/ &&\n>  \ttest_path_is_dir repo/.git &&\n> -\ttest_path_is_file repo/.git/HEAD &&\n> +\ttest_path_exists repo/.git/HEAD &&\n>  \ttest_path_is_dir untracked/\n>  '\n>  \n> @@ -663,11 +663,11 @@ test_expect_success 'git clean -d skips untracked dirs containing ignored files'\n>  \ttouch foo/bar foo/baz foo/a/aa/ignoreme foo/b/ignoreme foo/b/bb/1 foo/b/bb/2 &&\n>  \tgit clean -df &&\n>  \ttest_path_is_dir foo &&\n> -\ttest_path_is_file foo/bar &&\n> +\ttest_path_exists foo/bar &&\n>  \ttest_path_is_missing foo/baz &&\n> -\ttest_path_is_file foo/a/aa/ignoreme &&\n> +\ttest_path_exists foo/a/aa/ignoreme &&\n>  \ttest_path_is_missing foo/a/aa/aaa &&\n> -\ttest_path_is_file foo/b/ignoreme &&\n> +\ttest_path_exists foo/b/ignoreme &&\n>  \ttest_path_is_missing foo/b/bb\n>  '\n>  \n> @@ -688,9 +688,9 @@ test_expect_success 'git clean -d skips nested repo containing ignored files' '\n>  \n>  \tgit clean -fd &&\n>  \n> -\ttest_path_is_file nested-repo-with-ignored-file/.git/index &&\n> -\ttest_path_is_file nested-repo-with-ignored-file/ignoreme &&\n> -\ttest_path_is_file nested-repo-with-ignored-file/file\n> +\ttest_path_exists nested-repo-with-ignored-file/.git/index &&\n> +\ttest_path_exists nested-repo-with-ignored-file/ignoreme &&\n> +\ttest_path_exists nested-repo-with-ignored-file/file\n>  '\n>  \n>  test_expect_success 'git clean handles being told what to clean' '\n"}]}