diff options
Diffstat (limited to 'uniq-test/test')
-rwxr-xr-x | uniq-test/test | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/uniq-test/test b/uniq-test/test new file mode 100755 index 0000000..f5393a0 --- /dev/null +++ b/uniq-test/test @@ -0,0 +1,147 @@ +#!/bin/bash + +cd -- "$(dirname "$0")" +if test -z "$UNIQ"; then + UNIQ=../uniq +fi +N=7 +u="$PREFIX $UNIQ" + +report () +{ + if test $1 = 0; then + printf "\033[1;32mTest %s OK\033[m\n" "$2" + else + printf "\033[1;31mTest %s FAILED\033[m\n" "$2" + fi +} + +report_np () +{ + if test $1 = 0; then + printf "\033[1;32mTest %s OK (NON-POSIX)\033[m\n" "$2" + else + printf "\033[1;31mTest %s FAILED (NON-POSIX)\033[m\n" "$2" + fi +} + +test_file () +{ + diff <($u < $1.in) $1.out > /dev/null + report $? "file_$1" +} + + +file_1 () { test_file 1; } +file_2 () { test_file 2; } +file_3 () { test_file 3; } +file_4 () { test_file 4; } +file_5 () { test_file 5; } +file_6 () { test_file 6; } +file_7 () { test_file 7; } + +dflag () +{ + diff <($u -d < dflag.in) dflag.out > /dev/null + report $? "dflag" +} + +uflag () +{ + diff <($u -u < uflag.in) uflag.out > /dev/null + report $? "uflag" +} + +cflag () +{ + diff <($u -c < cflag.in | sed 's/^ *//') cflag.out > /dev/null + # The `sed` is due to conflicting specifications in uniq(1p). + report $? "cflag" +} + +sflag_excess () +{ + diff <($u -s10 < sflag_excess.in) sflag_excess.out > /dev/null + report $? "sflag_excess" +} + +sflag () +{ + diff <($u -s1 < sflag.in) sflag.out > /dev/null + report $? "sflag" +} + +f0flag () +{ + diff <($u -f0 < 5.in) 5.out > /dev/null + report_np $? "f0flag" +} + +fflag_excess () +{ + diff <($u -f10 < 5.in) <(head -n 1 < 5.out) > /dev/null + report $? "fflag_excess" +} + +fflag () +{ + diff <($u -f2 < fflag.in) fflag.out > /dev/null + report $? "fflag" +} + +fsflag () +{ + diff <($u -f2 -s2 < fsflag.in) fsflag.out > /dev/null + report $? "fsflag" +} + +file_in () +{ + diff <($u 5.in) 5.out > /dev/null + report $? "file_in" +} + +dash_in () +{ + diff <($u - < 5.in) 5.out > /dev/null + report $? "dash_in" +} + +file_out () +{ + $u - tmp < 5.in && diff tmp 5.out > /dev/null + report $? "file_out" +} + +dash_out () +{ + touch tmp; rm tmp; + $u - - < 5.in > tmp && diff tmp 5.out > /dev/null + report_np $? "dash_out" + if test -f ./-; then + rm ./- + fi +} + + +if test $# = 0; then + set $(printf 'file_%i\n' $(seq 1 $N)) dflag uflag cflag sflag_excess \ + sflag f0flag fflag_excess fflag fsflag file_in dash_in file_out \ + dash_out +fi +( +for f in $@; do + $f +done +) | tee result +! grep FAILED < result > /dev/null +ret=$? +if test $ret != 0; then + if test $(grep FAILED < result | grep -v NON-POSIX | wc -l) = 0; then + ret=1 + else + ret=2 + fi +fi +rm result +exit $ret |