#!/bin/sh if [ "$#" = 0 ]; then getopt=./getopt elif [ "$#" = 1 ]; then getopt="$1" else echo "Syntax: $0 [ PATH_TO_GETOPT ]" 2>&1 exit 2 fi # Reset the environment LC_ALL="C" unset LANG unset LC_CTYPE unset LC_COLLATE unset LC_MESSAGES unset POSIXLY_CORRECT unset GETOPT_COMPATIBLE cd `dirname $0` for testcmd in tests/*.cmd; do test_failed=0 rm -f test-stdout test-stderr test-stdout-expected test-stderr-expected testfile=`basename "$testcmd" .cmd` echo "Next test: $testfile" "tests/${testfile}.cmd" "$getopt" > test-stdout 2>test-stderr exitcode="$?" if [ "$exitcode" != "`cat tests/${testfile}.exitcode`" ]; then echo "TEST FAILED: expected exit code `cat tests/${testfile}.exitcode`, got $exitcode" test_failed=1 else echo "Received expected exit code" fi cat tests/${testfile}.stdout | sed "s,\$0,$getopt,g" > test-stdout-expected if ! cmp -s test-stdout test-stdout-expected ; then echo "TEST FAILED: unexpected stdout output, diff follows:" diff test-stdout test-stdout-expected test_failed=1 else echo "Received expected stdout output" fi cat tests/${testfile}.stderr | sed "s,\$0,$getopt,g" > test-stderr-expected if ! cmp -s test-stderr test-stderr-expected ; then echo "TEST FAILED: unexpected stdout output, diff follows:" diff test-stderr test-stderr-expected test_failed=1 else echo "Received expected stderr output" fi echo if [ "$test_failed" = 1 ]; then failed_tests="$failed_tests $testfile" fi rm -f test-stdout test-stderr test-stdout-expected test-stderr-expected echo done if [ -z "$failed_tests" ]; then echo "ALL TESTS SUCCEEDED" exit 0 else echo "SOME TESTS FAILED: $failed_tests" exit 1 fi