{"thread":{"id":"65037","subject":"[PATCH] t2004: use test_path_is_file instead of test -f","startedAt":"2026-02-21T17:28:15Z","lastAt":"2026-02-22T09:45:11Z","messageCount":2,"participants":["Lambert Duclos via GitGitGadget","Usman Akinyemi"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"536599","messageId":"pull.2049.git.1771694893208.gitgitgadget@gmail.com","threadId":"65037","inReplyTo":null,"subject":"[PATCH] t2004: use test_path_is_file instead of test -f","fromName":"Lambert Duclos via GitGitGadget","fromEmail":"gitgitgadget@gmail.com","sentAt":"2026-02-21T17:28:13Z","receivedAt":"2026-02-21T17:28:15Z","isPatch":true,"sender":{"key":"lambertddg@gmail.com","avatar":null},"body":"From: Lambert Duclos-de Guise <lambertddg@gmail.com>\n\nReplace 'test -f' with the helper function 'test_path_is_file'\nto provide better error messages upon failure.\n\nSigned-off-by: Lambert Duclos-de Guise <lambertddg@gmail.com>\n---\n    [GSoC] t2004: use test_path_is_file instead of test -f\n    \n    Replace 'test -f' with the helper function 'test_path_is_file' to\n    provide better error messages upon failure.\n\nPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-2049%2FLambertDuclos%2Ft2004-v1\nFetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2049/LambertDuclos/t2004-v1\nPull-Request: https://github.com/gitgitgadget/git/pull/2049\n\n t/t2004-checkout-cache-temp.sh | 42 +++++++++++++++++-----------------\n 1 file changed, 21 insertions(+), 21 deletions(-)\n\ndiff --git a/t/t2004-checkout-cache-temp.sh b/t/t2004-checkout-cache-temp.sh\nindex b92d96fdc4..0afe0ff7ca 100755\n--- a/t/t2004-checkout-cache-temp.sh\n+++ b/t/t2004-checkout-cache-temp.sh\n@@ -42,7 +42,7 @@ test_expect_success 'checkout one stage 0 to temporary file' '\n \ttest_line_count = 1 actual &&\n \ttest $(cut \"-d\t\" -f2 actual) = path1 &&\n \tp=$(cut \"-d\t\" -f1 actual) &&\n-\ttest -f $p &&\n+\ttest_path_is_file $p &&\n \ttest $(cat $p) = tree1path1\n '\n \n@@ -55,7 +55,7 @@ test_expect_success 'checkout all stage 0 to temporary files' '\n \tdo\n \t\ttest $(grep $f actual | cut \"-d\t\" -f2) = $f &&\n \t\tp=$(grep $f actual | cut \"-d\t\" -f1) &&\n-\t\ttest -f $p &&\n+\t\ttest_path_is_file $p &&\n \t\ttest $(cat $p) = tree1$f || return 1\n \tdone\n '\n@@ -71,7 +71,7 @@ test_expect_success 'checkout one stage 2 to temporary file' '\n \ttest_line_count = 1 actual &&\n \ttest $(cut \"-d\t\" -f2 actual) = path1 &&\n \tp=$(cut \"-d\t\" -f1 actual) &&\n-\ttest -f $p &&\n+\ttest_path_is_file $p &&\n \ttest $(cat $p) = tree2path1\n '\n \n@@ -83,7 +83,7 @@ test_expect_success 'checkout all stage 2 to temporary files' '\n \tdo\n \t\ttest $(grep $f actual | cut \"-d\t\" -f2) = $f &&\n \t\tp=$(grep $f actual | cut \"-d\t\" -f1) &&\n-\t\ttest -f $p &&\n+\t\ttest_path_is_file $p &&\n \t\ttest $(cat $p) = tree2$f || return 1\n \tdone\n '\n@@ -108,9 +108,9 @@ test_expect_success 'checkout all stages/one file to temporary files' '\n \ttest_line_count = 1 actual &&\n \ttest $(cut \"-d\t\" -f2 actual) = path1 &&\n \tcut \"-d\t\" -f1 actual | (read s1 s2 s3 &&\n-\ttest -f $s1 &&\n-\ttest -f $s2 &&\n-\ttest -f $s3 &&\n+\ttest_path_is_file $s1 &&\n+\ttest_path_is_file $s2 &&\n+\ttest_path_is_file $s3 &&\n \ttest $(cat $s1) = tree1path1 &&\n \ttest $(cat $s2) = tree2path1 &&\n \ttest $(cat $s3) = tree3path1)\n@@ -143,8 +143,8 @@ test_expect_success 'checkout some stages/one file to temporary files' '\n \ttest $(cut \"-d\t\" -f2 actual) = path2 &&\n \tcut \"-d\t\" -f1 actual | (read s1 s2 s3 &&\n \ttest $s1 = . &&\n-\ttest -f $s2 &&\n-\ttest -f $s3 &&\n+\ttest_path_is_file $s2 &&\n+\ttest_path_is_file $s3 &&\n \ttest $(cat $s2) = tree2path2 &&\n \ttest $(cat $s3) = tree3path2)\n '\n@@ -162,9 +162,9 @@ test_expect_success '-- path0: no entry' '\n test_expect_success '-- path1: all 3 stages' '\n \ttest $(grep path1 actual | cut \"-d\t\" -f2) = path1 &&\n \tgrep path1 actual | cut \"-d\t\" -f1 | (read s1 s2 s3 &&\n-\ttest -f $s1 &&\n-\ttest -f $s2 &&\n-\ttest -f $s3 &&\n+\ttest_path_is_file $s1 &&\n+\ttest_path_is_file $s2 &&\n+\ttest_path_is_file $s3 &&\n \ttest $(cat $s1) = tree1path1 &&\n \ttest $(cat $s2) = tree2path1 &&\n \ttest $(cat $s3) = tree3path1)\n@@ -174,8 +174,8 @@ test_expect_success '-- path2: no stage 1, have stage 2 and 3' '\n \ttest $(grep path2 actual | cut \"-d\t\" -f2) = path2 &&\n \tgrep path2 actual | cut \"-d\t\" -f1 | (read s1 s2 s3 &&\n \ttest $s1 = . &&\n-\ttest -f $s2 &&\n-\ttest -f $s3 &&\n+\ttest_path_is_file $s2 &&\n+\ttest_path_is_file $s3 &&\n \ttest $(cat $s2) = tree2path2 &&\n \ttest $(cat $s3) = tree3path2)\n '\n@@ -183,9 +183,9 @@ test_expect_success '-- path2: no stage 1, have stage 2 and 3' '\n test_expect_success '-- path3: no stage 2, have stage 1 and 3' '\n \ttest $(grep path3 actual | cut \"-d\t\" -f2) = path3 &&\n \tgrep path3 actual | cut \"-d\t\" -f1 | (read s1 s2 s3 &&\n-\ttest -f $s1 &&\n+\ttest_path_is_file $s1 &&\n \ttest $s2 = . &&\n-\ttest -f $s3 &&\n+\ttest_path_is_file $s3 &&\n \ttest $(cat $s1) = tree1path3 &&\n \ttest $(cat $s3) = tree3path3)\n '\n@@ -193,8 +193,8 @@ test_expect_success '-- path3: no stage 2, have stage 1 and 3' '\n test_expect_success '-- path4: no stage 3, have stage 1 and 3' '\n \ttest $(grep path4 actual | cut \"-d\t\" -f2) = path4 &&\n \tgrep path4 actual | cut \"-d\t\" -f1 | (read s1 s2 s3 &&\n-\ttest -f $s1 &&\n-\ttest -f $s2 &&\n+\ttest_path_is_file $s1 &&\n+\ttest_path_is_file $s2 &&\n \ttest $s3 = . &&\n \ttest $(cat $s1) = tree1path4 &&\n \ttest $(cat $s2) = tree2path4)\n@@ -203,7 +203,7 @@ test_expect_success '-- path4: no stage 3, have stage 1 and 3' '\n test_expect_success '-- asubdir/path5: no stage 2 and 3 have stage 1' '\n \ttest $(grep asubdir/path5 actual | cut \"-d\t\" -f2) = asubdir/path5 &&\n \tgrep asubdir/path5 actual | cut \"-d\t\" -f1 | (read s1 s2 s3 &&\n-\ttest -f $s1 &&\n+\ttest_path_is_file $s1 &&\n \ttest $s2 = . &&\n \ttest $s3 = . &&\n \ttest $(cat $s1) = tree1asubdir/path5)\n@@ -216,7 +216,7 @@ test_expect_success 'checkout --temp within subdir' '\n \t\ttest_line_count = 1 actual &&\n \t\ttest $(grep path5 actual | cut \"-d\t\" -f2) = path5 &&\n \t\tgrep path5 actual | cut \"-d\t\" -f1 | (read s1 s2 s3 &&\n-\t\ttest -f ../$s1 &&\n+\t\ttest_path_is_file ../$s1 &&\n \t\ttest $s2 = . &&\n \t\ttest $s3 = . &&\n \t\ttest $(cat ../$s1) = tree1asubdir/path5)\n@@ -230,7 +230,7 @@ test_expect_success 'checkout --temp symlink' '\n \ttest_line_count = 1 actual &&\n \ttest $(cut \"-d\t\" -f2 actual) = path6 &&\n \tp=$(cut \"-d\t\" -f1 actual) &&\n-\ttest -f $p &&\n+\ttest_path_is_file $p &&\n \ttest $(cat $p) = path7\n '\n \n\nbase-commit: 67ad42147a7acc2af6074753ebd03d904476118f\n-- \ngitgitgadget\n"},{"id":"536638","messageId":"CAPSxiM8f59DK75BeXXo53A2wRqtxd2wQ-ejpmGTyjnSsVTJFBA@mail.gmail.com","threadId":"65037","inReplyTo":"pull.2049.git.1771694893208.gitgitgadget@gmail.com","subject":"Re: [PATCH] t2004: use test_path_is_file instead of test -f","fromName":"Usman Akinyemi","fromEmail":"usmanakinyemi202@gmail.com","sentAt":"2026-02-22T09:44:59Z","receivedAt":"2026-02-22T09:45:11Z","isPatch":true,"sender":{"key":"usmanakinyemi202@gmail.com","avatar":"https://avatars.githubusercontent.com/u/86585626?v=4"},"body":">                 test $(cat ../$s1) = tree1asubdir/path5)\n> @@ -230,7 +230,7 @@ test_expect_success 'checkout --temp symlink' '\n>         test_line_count = 1 actual &&\n>         test $(cut \"-d  \" -f2 actual) = path6 &&\n>         p=$(cut \"-d     \" -f1 actual) &&\n> -       test -f $p &&\n> +       test_path_is_file $p &&\n>         test $(cat $p) = path7\n>  '\n>\n>\n> base-commit: 67ad42147a7acc2af6074753ebd03d904476118f\n> --\n> gitgitgadget\nI reviewed this patch, it looks good to me.\n>\n"}]}