t: replace diff by comm for linewise comparison
authorMischa POSLAWSKY <perl@shiar.org>
Tue, 10 Sep 2019 19:09:53 +0000 (21:09 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Thu, 12 Sep 2019 15:48:11 +0000 (17:48 +0200)
Prevent skipped lines, assuming matching order is retained.
Similar output otherwise after prefix replacement.

t/regress.t

index f81cfd7aab1ace5f30f91baa8f09e77f23bdaa82..45ee5ba2b64d56682f78719e1520bfbe7943da50 100755 (executable)
@@ -5,8 +5,11 @@ cd "${0%/*}" || exit 1
 test_count=0
 
 COLUMNS=40
-diffcmd='diff --unchanged-line-format= --old-line-format=<%L --new-line-format=>%L'
 regenerate=
+diffcmd () {
+       comm --nocheck-order --output-delimiter=::: -3 $@ |
+       perl -pe'END{exit !!$.} s/^:::/>/ || s/^/</'
+}
 
 for option in "$@"
 do
@@ -36,7 +39,7 @@ do
                $cmd >$file.out 2>&1
        else
                if test -e $file.sh;  then $cmd 2>&1 | ./$file.sh; fi &&
-               if test -e $file.out; then $cmd 2>&1 | $diffcmd "$file.out" -; fi
+               if test -e $file.out; then $cmd 2>&1 | diffcmd "$file.out" -; fi
        fi
 
        test 0 = $? || printf 'not '