Re: [PATCH v2 2/2] tests: fix and add lint for non-portable seq
On Thu, Aug 23 2018, Junio C Hamano wrote:
Show 41 quoted lines
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> 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@gmail.com>
>> ---
>>
>> Now with a fix & check in v2 for the seq issue mentioned in
>> https://public-inbox.org/git/87a7pdfltp.fsf@evledraar.gmail.com/
>
> 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 &&