On Thu, Aug 23 2018, Junio C Hamano wrote: > Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > >> GNU seq is not a POSIX command, and doesn't exist on > > s/GNU //; the command did not even originate there, but came from V8 > and/or Plan9 IIRC. > >> e.g. OpenBSD. We've had the test_seq wrapper since d17cf5f3a3 ("tests: >> Introduce test_seq", 2012-08-04), but use of it keeps coming back, >> e.g. in the recently added "fetch negotiator" tests being added here. >> >> So let's also add a check to "make test-lint". The regex is aiming to >> capture the likes of $(seq ..) and "seq" as a stand-alone command, >> without capturing some existing cases where we e.g. have files called >> "seq". >> >> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> >> --- >> >> Now with a fix & check in v2 for the seq issue mentioned in >> https://public-inbox.org/git/87a7pdfltp.fsf@xxxxxxxxxxxxxxxxxxx/ > > Thanks. > >> t/check-non-portable-shell.pl | 1 + >> t/t5552-skipping-fetch-negotiator.sh | 12 ++++++------ >> t/t5703-upload-pack-ref-in-want.sh | 4 ++-- >> 3 files changed, 9 insertions(+), 8 deletions(-) >> >> diff --git a/t/check-non-portable-shell.pl b/t/check-non-portable-shell.pl >> index c8f10d40a1..75f38298d7 100755 >> --- a/t/check-non-portable-shell.pl >> +++ b/t/check-non-portable-shell.pl >> @@ -42,6 +42,7 @@ sub err { >> /\btest\s+[^=]*==/ and err '"test a == b" is not portable (use =)'; >> /\bwc -l.*"\s*=/ and err '`"$(wc -l)"` is not portable (use test_line_count)'; >> /\bhead\s+-c\b/ and err 'head -c is not portable (use test_copy_bytes BYTES <file >out)'; >> + /(?:\$\(seq|^\s*seq\b)/ and err 'seq is not portable (use test_seq)'; > > Looking at $(wc -l) thing a few lines above, I am not sure if this > deviation is a good idea. Wouldn't /\bseq\s/ be sufficient? As alluded to in the commit message that will find cases like: $ git grep -P '\bseq\b' -- t | grep -P -v '(?:\$\(seq|^\s*seq\b)' t/perf/p3400-rebase.sh:16: seq 1000 >>unrelated-file$i && t/perf/p3400-rebase.sh:21: seq 1000 | tac >>unrelated-file$i && t/t3404-rebase-interactive.sh:1227: test_seq 5 | sed "s/$double/&&/" >seq && t/t3404-rebase-interactive.sh:1228: git add seq && t/t3404-rebase-interactive.sh:1230: git commit -m seq-$double t/t3404-rebase-interactive.sh:1232: git tag seq-onto && t/t3404-rebase-interactive.sh:1234: git cherry-pick seq-onto && t/t3404-rebase-interactive.sh:1236: test_must_fail env FAKE_LINES= git rebase -i seq-onto && t/t3404-rebase-interactive.sh:1239: git diff --exit-code seq-onto && t/t4022-diff-rewrite.sh:69: test_seq 1 99 >seq && t/t4022-diff-rewrite.sh:70: printf 100 >>seq && t/t4022-diff-rewrite.sh:71: git add seq && t/t4022-diff-rewrite.sh:72: git commit seq -m seq t/t4022-diff-rewrite.sh:76: test_seq 1 5 >seq && t/t4022-diff-rewrite.sh:77: test_seq 9331 9420 >>seq && t/t4022-diff-rewrite.sh:78: test_seq 96 100 >>seq t/t4022-diff-rewrite.sh:82: git diff -B seq >res && t/t4022-diff-rewrite.sh:87: git diff seq >res && t/t4022-diff-rewrite.sh:93: git diff -B seq >res && t/t4150-am.sh:933: git format-patch -2 --stdout >seq.patch && t/t4150-am.sh:945: test_must_fail git am -3 seq.patch && t/t4150-am.sh:955: test_must_fail git am -3 seq.patch && t/t5520-pull.sh:295: git checkout -b seq && t/t5520-pull.sh:296: test_seq 5 >seq.txt && t/t5520-pull.sh:297: git add seq.txt && t/t5520-pull.sh:299: git commit -m "Add seq.txt" && t/t5520-pull.sh:300: echo 6 >>seq.txt && t/t5520-pull.sh:302: git commit -m "Append to seq.txt" seq.txt && t/t5520-pull.sh:304: echo conflicting >>seq.txt && t/t5520-pull.sh:306: git commit -m "Create conflict" seq.txt && t/t5520-pull.sh:307: test_must_fail git pull --rebase . seq 2>err >out &&