{"thread":{"id":"48575","subject":"Re: [PATCH 2/5] t6036, t6042: use test_line_count instead of wc -l","startedAt":"2018-05-26T01:09:54Z","lastAt":"2018-05-26T23:59:05Z","messageCount":2,"participants":["Elijah Newren","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":5},"messages":[{"id":"348574","messageId":"20180526010944.9975-1-newren@gmail.com","threadId":"48575","inReplyTo":"CABPp-BEcTKaPPUOVqTRUAW+LBBySCK0dgx1J66hYB30yMasK_Q@mail.gmail.com/","subject":"Re: [PATCH 2/5] t6036, t6042: use test_line_count instead of wc -l","fromName":"Elijah Newren","fromEmail":"newren@gmail.com","sentAt":"2018-05-26T01:09:44Z","receivedAt":"2018-05-26T01:09:54Z","isPatch":true,"sender":{"key":"newren@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5455730?v=4"},"body":"On Thu, May 24, 2018 at 6:17 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> SZEDER Gábor <szeder.dev@gmail.com> writes:\n>\n>>> -            test 2 = $(git ls-files -s | wc -l) &&\n>>> -            test 2 = $(git ls-files -u | wc -l) &&\n>>> -            test 2 = $(git ls-files -o | wc -l) &&\n>>\n>> Here 'git ls-files -o' should have listed two untracked files ...\n>>\n>>> +            git ls-files -s >out &&\n>>> +            test_line_count = 2 out &&\n>>> +            git ls-files -u >out &&\n>>> +            test_line_count = 2 out &&\n>>> +            git ls-files -o >out &&\n>>> +            test_line_count = 3 out &&\n>>\n>> ... but now you expect it to list three.  I was about to point out the\n>> typo, but then noticed that you expect it to list one more untracked\n>> file than before in all subsequent tests...  now that can't be just a\n>> typo, can it?\n>>\n>> Please mention in the commit message that when using an intermediate\n>> file to store the output, 'git ls-files -o' will list that file, too,\n>> that's why the number of expected untracked files had to be adjusted;\n>> so future readers won't have to figure this out themselves.\n>\n> I'd expect that a reader of the commit who cares enough to bother to\n> wonder by looking at the patch and seeing that 2 became 3 would know\n> why already.  And a reader of the resulting file would not know that\n> the 3 used to be 2, and won't be helped by \"we used to count to 2,\n> now we have 'out' also counted\" that much, especially in the commit\n> log message.  What would help the latter would be to name which\n> three paths we expect to see in the comment (or test against the\n> exact list of paths, instead of using test_line_count).\n>\n>> An alternative to consider would be to add a .gitignore file in the\n>> initial commit to ignore 'out', then the number of untracked files\n>> don't have to be adjusted.\n>\n> I think that is a preferred solution that we've used in ls-files and\n> status tests successfully.\n\n...except that if we add a .gitignore to each initial commit (we use\ntest_create_repo for nearly every test to keep them separable meaning\nwe'd have to do this many times), then four lines above we have to\nadjust the number of expected tracked files.  And, for it to work,\nwe'd have to add an --exclude-standard flag to ls-files -o.\n\nI can make that change if you both want it, but it seems like it's\nactually making it harder to follow the changes rather than easier.\n\n-- >8 --\nSubject: [PATCH] fixup! t6036, t6042: use test_line_count instead of wc -l\n\n---\n\nand here's what it looks like which you can apply as a fixup.  I think it makes things worse, though.\n\n t/t6036-recursive-corner-cases.sh    | 81 +++++++++++++-----------\n t/t6042-merge-rename-corner-cases.sh | 93 +++++++++++++++-------------\n 2 files changed, 95 insertions(+), 79 deletions(-)\n\ndiff --git a/t/t6036-recursive-corner-cases.sh b/t/t6036-recursive-corner-cases.sh\nindex 3e659cff28..06944a8c0a 100755\n--- a/t/t6036-recursive-corner-cases.sh\n+++ b/t/t6036-recursive-corner-cases.sh\n@@ -25,6 +25,7 @@ test_expect_success 'setup basic criss-cross + rename with no modifications' '\n \t(\n \t\tcd basic-rename &&\n \n+\t\techo out >.gitignore &&\n \t\tten=\"0 1 2 3 4 5 6 7 8 9\" &&\n \t\tfor i in $ten\n \t\tdo\n@@ -34,7 +35,7 @@ test_expect_success 'setup basic criss-cross + rename with no modifications' '\n \t\tdo\n \t\t\techo line $i in another sample file\n \t\tdone >two &&\n-\t\tgit add one two &&\n+\t\tgit add .gitignore one two &&\n \t\ttest_tick && git commit -m initial &&\n \n \t\tgit branch L1 &&\n@@ -66,11 +67,11 @@ test_expect_success 'merge simple rename+criss-cross with no modifications' '\n \t\ttest_must_fail git merge -s recursive R2^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\ttest_line_count = 3 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 2 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 3 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 2 out &&\n \n \t\ttest $(git rev-parse :2:three) = $(git rev-parse L2:three) &&\n \t\ttest $(git rev-parse :3:three) = $(git rev-parse R2:three) &&\n@@ -97,6 +98,7 @@ test_expect_success 'setup criss-cross + rename merges with basic modification'\n \t(\n \t\tcd rename-modify &&\n \n+\t\techo out >.gitignore &&\n \t\tten=\"0 1 2 3 4 5 6 7 8 9\" &&\n \t\tfor i in $ten\n \t\tdo\n@@ -106,7 +108,7 @@ test_expect_success 'setup criss-cross + rename merges with basic modification'\n \t\tdo\n \t\t\techo line $i in another sample file\n \t\tdone >two &&\n-\t\tgit add one two &&\n+\t\tgit add .gitignore one two &&\n \t\ttest_tick && git commit -m initial &&\n \n \t\tgit branch L1 &&\n@@ -139,11 +141,11 @@ test_expect_success 'merge criss-cross + rename merges with basic modification'\n \t\ttest_must_fail git merge -s recursive R2^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\ttest_line_count = 3 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 2 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 3 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 2 out &&\n \n \t\ttest $(git rev-parse :2:three) = $(git rev-parse L2:three) &&\n \t\ttest $(git rev-parse :3:three) = $(git rev-parse R2:three) &&\n@@ -178,8 +180,9 @@ test_expect_success 'setup differently handled merges of rename/add conflict' '\n \t(\n \t\tcd rename-add &&\n \n+\t\techo out >.gitignore &&\n \t\tprintf \"0\\n1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n\" >a &&\n-\t\tgit add a &&\n+\t\tgit add .gitignore a &&\n \t\ttest_tick && git commit -m A &&\n \n \t\tgit branch B &&\n@@ -218,11 +221,11 @@ test_expect_success 'git detects differently handled merges conflict' '\n \t\ttest_must_fail git merge -s recursive E^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 3 out &&\n+\t\ttest_line_count = 4 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 3 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest $(git rev-parse :2:new_a) = $(git rev-parse D:new_a) &&\n \t\ttest $(git rev-parse :3:new_a) = $(git rev-parse E:new_a) &&\n@@ -376,8 +379,9 @@ test_expect_success 'setup differently handled merges of directory/file conflict\n \t(\n \t\tcd directory-file &&\n \n+\t\techo out >.gitignore &&\n \t\t>ignore-me &&\n-\t\tgit add ignore-me &&\n+\t\tgit add .gitignore ignore-me &&\n \t\ttest_tick &&\n \t\tgit commit -m A &&\n \t\tgit tag A &&\n@@ -437,11 +441,11 @@ test_expect_success 'merge of D & E1 fails but has appropriate contents' '\n \t\ttest_must_fail git merge -s recursive E1^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\ttest_line_count = 3 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 1 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n \t\ttest $(git rev-parse :2:a) = $(git rev-parse B:a)\n@@ -457,11 +461,11 @@ test_expect_success 'merge of E1 & D fails but has appropriate contents' '\n \t\ttest_must_fail git merge -s recursive D^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\ttest_line_count = 3 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 1 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n \t\ttest $(git rev-parse :3:a) = $(git rev-parse B:a)\n@@ -477,11 +481,11 @@ test_expect_success 'merge of D & E2 fails but has appropriate contents' '\n \t\ttest_must_fail git merge -s recursive E2^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 4 out &&\n+\t\ttest_line_count = 5 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 3 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 1 out &&\n \n \t\ttest $(git rev-parse :2:a) = $(git rev-parse B:a) &&\n \t\ttest $(git rev-parse :3:a/file) = $(git rev-parse E2:a/file) &&\n@@ -501,11 +505,11 @@ test_expect_success 'merge of E2 & D fails but has appropriate contents' '\n \t\ttest_must_fail git merge -s recursive D^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 4 out &&\n+\t\ttest_line_count = 5 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 3 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 1 out &&\n \n \t\ttest $(git rev-parse :3:a) = $(git rev-parse B:a) &&\n \t\ttest $(git rev-parse :2:a/file) = $(git rev-parse E2:a/file) &&\n@@ -560,8 +564,9 @@ test_expect_success 'setup rename/rename(1to2)/modify followed by what looks lik\n \t(\n \t\tcd rename-squared-squared &&\n \n+\t\techo out >.gitignore &&\n \t\tprintf \"1\\n2\\n3\\n4\\n5\\n6\\n\" >a &&\n-\t\tgit add a &&\n+\t\tgit add .gitignore a &&\n \t\tgit commit -m A &&\n \t\tgit tag A &&\n \n@@ -600,11 +605,11 @@ test_expect_success 'handle rename/rename(1to2)/modify followed by what looks li\n \t\tgit merge -s recursive E^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\ttest_line_count = 2 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 0 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest $(git rev-parse HEAD:newname) = $(git rev-parse E:newname)\n \t)\n@@ -637,8 +642,9 @@ test_expect_success 'setup criss-cross + rename/rename/add-source + modify/modif\n \t(\n \t\tcd rename-rename-add-source &&\n \n+\t\techo out >.gitignore &&\n \t\tprintf \"lots\\nof\\nwords\\nand\\ncontent\\n\" >a &&\n-\t\tgit add a &&\n+\t\tgit add .gitignore a &&\n \t\tgit commit -m A &&\n \t\tgit tag A &&\n \n@@ -682,11 +688,11 @@ test_expect_failure 'detect rename/rename/add-source for virtual merge-base' '\n \t\tgit merge -s recursive E^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 3 out &&\n+\t\ttest_line_count = 4 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 0 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest $(git rev-parse HEAD:b) = $(git rev-parse A:a) &&\n \t\ttest $(git rev-parse HEAD:c) = $(git rev-parse A:a) &&\n@@ -719,8 +725,9 @@ test_expect_success 'setup criss-cross+rename/rename/add-dest + simple modify' '\n \t(\n \t\tcd rename-rename-add-dest &&\n \n+\t\techo out >.gitignore &&\n \t\t>a &&\n-\t\tgit add a &&\n+\t\tgit add .gitignore a &&\n \t\tgit commit -m A &&\n \t\tgit tag A &&\n \n@@ -759,11 +766,11 @@ test_expect_success 'virtual merge base handles rename/rename(1to2)/add-dest' '\n \t\tgit merge -s recursive E^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\ttest_line_count = 3 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 0 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest $(git rev-parse HEAD:a) = $(git rev-parse A:a) &&\n \t\ttest $(git rev-parse HEAD:c) = $(git rev-parse E:c)\ndiff --git a/t/t6042-merge-rename-corner-cases.sh b/t/t6042-merge-rename-corner-cases.sh\nindex b76da8fcdf..a330ced7da 100755\n--- a/t/t6042-merge-rename-corner-cases.sh\n+++ b/t/t6042-merge-rename-corner-cases.sh\n@@ -90,9 +90,10 @@ test_expect_success 'setup resolvable conflict missed if rename missed' '\n \t(\n \t\tcd break-detection-1 &&\n \n+\t\techo out >.gitignore &&\n \t\tprintf \"1\\n2\\n3\\n4\\n5\\n\" >a &&\n \t\techo foo >b &&\n-\t\tgit add a b &&\n+\t\tgit add .gitignore a b &&\n \t\tgit commit -m A &&\n \t\tgit tag A &&\n \n@@ -117,11 +118,11 @@ test_expect_failure 'conflict caused if rename not detected' '\n \t\tgit merge -s recursive B^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 3 out &&\n+\t\ttest_line_count = 4 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 0 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest_line_count = 6 c &&\n \t\ttest $(git rev-parse HEAD:a) = $(git rev-parse B:a) &&\n@@ -181,8 +182,9 @@ test_expect_success 'setup undetected rename/add-source causes data loss' '\n \t(\n \t\tcd break-detection-3 &&\n \n+\t\techo out >.gitignore &&\n \t\tprintf \"1\\n2\\n3\\n4\\n5\\n\" >a &&\n-\t\tgit add a &&\n+\t\tgit add .gitignore a &&\n \t\tgit commit -m A &&\n \t\tgit tag A &&\n \n@@ -207,11 +209,11 @@ test_expect_failure 'detect rename/add-source and preserve all data' '\n \t\tgit merge -s recursive C^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\ttest_line_count = 3 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 2 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest -f a &&\n \t\ttest -f b &&\n@@ -230,11 +232,11 @@ test_expect_failure 'detect rename/add-source and preserve all data, merge other\n \t\tgit merge -s recursive B^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\ttest_line_count = 3 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 2 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest -f a &&\n \t\ttest -f b &&\n@@ -249,8 +251,9 @@ test_expect_success 'setup content merge + rename/directory conflict' '\n \t(\n \t\tcd rename-directory-1 &&\n \n+\t\techo out >.gitignore &&\n \t\tprintf \"1\\n2\\n3\\n4\\n5\\n6\\n\" >file &&\n-\t\tgit add file &&\n+\t\tgit add .gitignore file &&\n \t\ttest_tick &&\n \t\tgit commit -m base &&\n \t\tgit tag base &&\n@@ -289,11 +292,11 @@ test_expect_success 'rename/directory conflict + clean content merge' '\n \t\ttest_must_fail git merge -s recursive right^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\ttest_line_count = 3 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 1 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 1 out &&\n \n \t\techo 0 >expect &&\n \t\tgit cat-file -p base:file >>expect &&\n@@ -320,11 +323,11 @@ test_expect_success 'rename/directory conflict + content merge conflict' '\n \t\ttest_must_fail git merge -s recursive right^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 4 out &&\n+\t\ttest_line_count = 5 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 3 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 1 out &&\n \n \t\tgit cat-file -p left-conflict:newfile >left &&\n \t\tgit cat-file -p base:file    >base &&\n@@ -350,9 +353,10 @@ test_expect_success 'setup content merge + rename/directory conflict w/ disappea\n \t(\n \t\tcd rename-directory-2 &&\n \n+\t\techo out >.gitignore &&\n \t\tmkdir sub &&\n \t\tprintf \"1\\n2\\n3\\n4\\n5\\n6\\n\" >sub/file &&\n-\t\tgit add sub/file &&\n+\t\tgit add .gitignore sub/file &&\n \t\ttest_tick &&\n \t\tgit commit -m base &&\n \t\tgit tag base &&\n@@ -383,11 +387,11 @@ test_expect_success 'disappearing dir in rename/directory conflict handled' '\n \t\tgit merge -s recursive right^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\ttest_line_count = 2 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 0 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\techo 0 >expect &&\n \t\tgit cat-file -p base:sub/file >>expect &&\n@@ -415,9 +419,10 @@ test_expect_success 'setup rename/rename (2to1) + modify/modify' '\n \t(\n \t\tcd rename-rename-2to1 &&\n \n+\t\techo out >.gitignore &&\n \t\tprintf \"1\\n2\\n3\\n4\\n5\\n\" >a &&\n \t\tprintf \"5\\n4\\n3\\n2\\n1\\n\" >b &&\n-\t\tgit add a b &&\n+\t\tgit add .gitignore a b &&\n \t\tgit commit -m A &&\n \t\tgit tag A &&\n \n@@ -445,13 +450,13 @@ test_expect_success 'handle rename/rename (2to1) conflict correctly' '\n \t\ttest_i18ngrep \"CONFLICT (rename/rename)\" out &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n+\t\ttest_line_count = 3 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 2 out &&\n \t\tgit ls-files -u c >out &&\n \t\ttest_line_count = 2 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 3 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 2 out &&\n \n \t\ttest ! -f a &&\n \t\ttest ! -f b &&\n@@ -472,8 +477,9 @@ test_expect_success 'setup simple rename/rename (1to2) conflict' '\n \t(\n \t\tcd rename-rename-1to2 &&\n \n+\t\techo out >.gitignore &&\n \t\techo stuff >a &&\n-\t\tgit add a &&\n+\t\tgit add .gitignore a &&\n \t\ttest_tick &&\n \t\tgit commit -m A &&\n \t\tgit tag A &&\n@@ -499,11 +505,11 @@ test_expect_success 'merge has correct working tree contents' '\n \t\ttest_must_fail git merge -s recursive B^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 3 out &&\n+\t\ttest_line_count = 4 out &&\n \t\tgit ls-files -u >out &&\n \t\ttest_line_count = 3 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest $(git rev-parse :1:a) = $(git rev-parse A:a) &&\n \t\ttest $(git rev-parse :3:b) = $(git rev-parse A:a) &&\n@@ -527,8 +533,9 @@ test_expect_success 'setup rename/rename(1to2)/add-source conflict' '\n \t(\n \t\tcd rename-rename-1to2-add-source-1 &&\n \n+\t\techo out >.gitignore &&\n \t\tprintf \"1\\n2\\n3\\n4\\n5\\n6\\n7\\n\" >a &&\n-\t\tgit add a &&\n+\t\tgit add .gitignore a &&\n \t\tgit commit -m A &&\n \t\tgit tag A &&\n \n@@ -553,9 +560,9 @@ test_expect_failure 'detect conflict with rename/rename(1to2)/add-source merge'\n \t\ttest_must_fail git merge -s recursive C^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 4 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\ttest_line_count = 5 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest $(git rev-parse 3:a) = $(git rev-parse C:a) &&\n \t\ttest $(git rev-parse 1:a) = $(git rev-parse A:a) &&\n@@ -573,8 +580,9 @@ test_expect_success 'setup rename/rename(1to2)/add-source resolvable conflict' '\n \t(\n \t\tcd rename-rename-1to2-add-source-2 &&\n \n+\t\techo out >.gitignore &&\n \t\t>a &&\n-\t\tgit add a &&\n+\t\tgit add .gitignore a &&\n \t\ttest_tick &&\n \t\tgit commit -m base &&\n \t\tgit tag A &&\n@@ -601,9 +609,9 @@ test_expect_failure 'rename/rename/add-source still tracks new a file' '\n \t\tgit merge -s recursive B^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 2 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 1 out &&\n+\t\ttest_line_count = 3 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 0 out &&\n \n \t\ttest $(git rev-parse HEAD:a) = $(git rev-parse C:a) &&\n \t\ttest $(git rev-parse HEAD:b) = $(git rev-parse A:a)\n@@ -615,8 +623,9 @@ test_expect_success 'setup rename/rename(1to2)/add-dest conflict' '\n \t(\n \t\tcd rename-rename-1to2-add-dest &&\n \n+\t\techo out >.gitignore &&\n \t\techo stuff >a &&\n-\t\tgit add a &&\n+\t\tgit add .gitignore a &&\n \t\ttest_tick &&\n \t\tgit commit -m base &&\n \t\tgit tag A &&\n@@ -645,13 +654,13 @@ test_expect_success 'rename/rename/add-dest merge still knows about conflicting\n \t\ttest_must_fail git merge -s recursive B^0 &&\n \n \t\tgit ls-files -s >out &&\n-\t\ttest_line_count = 5 out &&\n+\t\ttest_line_count = 6 out &&\n \t\tgit ls-files -u b >out &&\n \t\ttest_line_count = 2 out &&\n \t\tgit ls-files -u c >out &&\n \t\ttest_line_count = 2 out &&\n-\t\tgit ls-files -o >out &&\n-\t\ttest_line_count = 5 out &&\n+\t\tgit ls-files -o --exclude-standard >out &&\n+\t\ttest_line_count = 4 out &&\n \n \t\ttest $(git rev-parse :1:a) = $(git rev-parse A:a) &&\n \t\ttest $(git rev-parse :2:b) = $(git rev-parse C:b) &&\n-- \n2.17.0.844.g1ca50c8745.dirty\n\n"},{"id":"348613","messageId":"xmqq4lium0jg.fsf@gitster-ct.c.googlers.com","threadId":"48575","inReplyTo":"20180526010944.9975-1-newren@gmail.com","subject":"Re: [PATCH 2/5] t6036, t6042: use test_line_count instead of wc -l","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-05-26T23:58:59Z","receivedAt":"2018-05-26T23:59:05Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Elijah Newren <newren@gmail.com> writes:\n\n>> I'd expect that a reader of the commit who cares enough to bother to\n>> wonder by looking at the patch and seeing that 2 became 3 would know\n>> why already.  And a reader of the resulting file would not know that\n>> the 3 used to be 2, and won't be helped by \"we used to count to 2,\n>> now we have 'out' also counted\" that much, especially in the commit\n>> log message.  What would help the latter would be to name which\n>> three paths we expect to see in the comment (or test against the\n>> exact list of paths, instead of using test_line_count).\n>>\n>>> An alternative to consider would be to add a .gitignore file in the\n>>> initial commit to ignore 'out', then the number of untracked files\n>>> don't have to be adjusted.\n>>\n>> I think that is a preferred solution that we've used in ls-files and\n>> status tests successfully.\n>\n> ...except that if we add a .gitignore to each initial commit (we use\n> test_create_repo for nearly every test to keep them separable meaning\n> we'd have to do this many times), then four lines above we have to\n> adjust the number of expected tracked files.  And, for it to work,\n> we'd have to add an --exclude-standard flag to ls-files -o.\n\nYeah, unless the original planned to use the .gitignore mechanism,\nconverting it to use it now will become noisy.\n"}]}