From fd9f53cfdf3b1d69f8ace0deded9699b248ac81f Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Fri, 7 Sep 2007 22:46:52 +0200 Subject: Move the sole test in tests/expr to tests/misc/expr. * tests/expr/basic: Move this file to ... * tests/misc/expr: ...here. Don't rely on $PROG in env. * tests/misc/Makefile.am (TESTS): Add expr. * tests/Makefile.am (SUBDIRS): Remove expr. * tests/expr: Remove the directory. * configure.ac (AC_CONFIG_FILES): Remove tests/expr/Makefile --- configure.ac | 1 - tests/Makefile.am | 2 +- tests/expr/Makefile.am | 10 --- tests/expr/basic | 186 ------------------------------------------------- tests/misc/Makefile.am | 1 + tests/misc/expr | 185 ++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 187 insertions(+), 198 deletions(-) delete mode 100644 tests/expr/Makefile.am delete mode 100755 tests/expr/basic create mode 100755 tests/misc/expr diff --git a/configure.ac b/configure.ac index c488f0d8a..157ca30be 100644 --- a/configure.ac +++ b/configure.ac @@ -343,7 +343,6 @@ AC_CONFIG_FILES( tests/cut/Makefile tests/dd/Makefile tests/du/Makefile - tests/expr/Makefile tests/factor/Makefile tests/fmt/Makefile tests/head/Makefile diff --git a/tests/Makefile.am b/tests/Makefile.am index 2d57bfcf5..84e0fdd87 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -44,7 +44,7 @@ EXTRA_DIST = \ ## N O T E :: Please do not add new tests/ directories. ## There are too many already. Put new tests in misc/. SUBDIRS = \ - chgrp chmod chown cp cut dd du expr factor fmt head \ + chgrp chmod chown cp cut dd du factor fmt head \ install join ln ls ls-2 md5sum misc mkdir mv od pr readlink rm rmdir \ seq sha1sum shred sort stty sum tac tail tail-2 tee test touch tr \ tsort unexpand uniq wc diff --git a/tests/expr/Makefile.am b/tests/expr/Makefile.am deleted file mode 100644 index 7440c74dc..000000000 --- a/tests/expr/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -## Process this file with automake to produce Makefile.in -*-Makefile-*-. -TESTS = basic -EXTRA_DIST = $(TESTS) -TESTS_ENVIRONMENT = \ - top_srcdir=$(top_srcdir) \ - srcdir=$(srcdir) \ - PERL="$(PERL)" \ - CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \ - PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \ - PROG=expr diff --git a/tests/expr/basic b/tests/expr/basic deleted file mode 100755 index 5227da049..000000000 --- a/tests/expr/basic +++ /dev/null @@ -1,186 +0,0 @@ -#!/bin/sh -# -*-perl-*- -# Basic tests for "expr". - -# Copyright (C) 2001, 2003-2007 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -: ${PERL=perl} -: ${srcdir=.} - -$PERL -e 1 > /dev/null 2>&1 || { - echo 1>&2 "$0: configure didn't find a usable version of Perl," \ - "so can't run this test" - exit 77 -} - -me=`echo $0|sed 's,.*/,,'` -exec $PERL -w -I$srcdir/.. -MCoreutils -M"CuTmpdir qw($me)" -- - << \EOF -require 5.003; -use strict; - -(my $program_name = $0) =~ s|.*/||; - -# Turn off localisation of executable's ouput. -@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; - -my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n"; - -my @Tests = - ( - ['a', '5 + 6', {OUT => '11'}], - ['b', '5 - 6', {OUT => '-1'}], - ['c', '5 \* 6', {OUT => '30'}], - ['d', '100 / 6', {OUT => '16'}], - ['e', '100 % 6', {OUT => '4'}], - ['f', '3 + -2', {OUT => '1'}], - ['g', '-2 + -2', {OUT => '-4'}], - - ['paren1', '\( 100 % 6 \)', {OUT => '4'}], - ['paren2', '\( 100 % 6 \) - 8', {OUT => '-4'}], - ['paren3', '9 / \( 100 % 6 \) - 8', {OUT => '-6'}], - ['paren4', '9 / \( \( 100 % 6 \) - 8 \)', {OUT => '-2'}], - ['paren5', '9 + \( 100 % 6 \)', {OUT => '13'}], - - # Before 2.0.12, this would output `1'. - ['0bang', '00 \< 0!', {OUT => '0'}, {EXIT => 1}], - - # In 5.1.3 and earlier, these would exit with status 0. - ['00', '00', {OUT => '00'}, {EXIT => 1}], - ['minus0', '-0', {OUT => '-0'}, {EXIT => 1}], - - # In 5.1.3 and earlier, these would report errors. - ['andand', '0 \& 1 / 0', {OUT => '0'}, {EXIT => 1}], - ['oror', '1 \| 1 / 0', {OUT => '1'}, {EXIT => 0}], - - # In 5.1.3 and earlier, this would output the empty string. - ['orempty', '"" \| ""', {OUT => '0'}, {EXIT => 1}], - - # This evoked a syntax error diagnostic before 2.0.12. - ['minus2', '-- 2 + 2', {OUT => '4'}], - - # This erroneously succeeded and output `3' before 2.0.12. - ['fail-a', '3 + -', {ERR => "$prog: non-numeric argument\n"}, - {EXIT => 2}], - - # This erroneously succeeded before 5.3.1. - ['bigcmp', '-- -2417851639229258349412352 \< 2417851639229258349412352', - {OUT => '1'}, {EXIT => 0}], - - # In 5.94 and earlier, anchors incorrectly matched newlines. - ['anchor', "'a\nb' : 'a\$'", {OUT => '0'}, {EXIT => 1}], - - # These tests are taken from grep/tests/bre.tests. - ['bre1', '"abc" : "a\\(b\\)c"', {OUT => 'b'}], - ['bre2', '"a(" : "a("', {OUT => '2'}], - ['bre3', '_ : "a\\("', - {ERR => "$prog: Unmatched ( or \\(\n"}, {EXIT => 2}], - ['bre4', '_ : "a\\(b"', - {ERR => "$prog: Unmatched ( or \\(\n"}, {EXIT => 2}], - ['bre5', '"a(b" : "a(b"', {OUT => '3'}], - ['bre6', '"a)" : "a)"', {OUT => '2'}], - ['bre7', '_ : "a\\)"', - {ERR => "$prog: Unmatched ) or \\)\n"}, {EXIT => 2}], - ['bre8', '_ : "\\)"', - {ERR => "$prog: Unmatched ) or \\)\n"}, {EXIT => 2}], - ['bre9', '"ab" : "a\\(\\)b"', {OUT => ''}, {EXIT => 1}], - ['bre10', '"a^b" : "a^b"', {OUT => '3'}], - ['bre11', '"a\$b" : "a\$b"', {OUT => '3'}], - ['bre12', '"" : "\\($\\)\\(^\\)"', {OUT => ''}, {EXIT => 1}], - ['bre13', '"b" : "a*\\(^b\$\\)c*"', {OUT => 'b'}], - ['bre14', '"X|" : "X\\(|\\)" : "(" "X|" : "X\\(|\\)" ")"', {OUT => '1'}], - ['bre15', '"X*" : "X\\(*\\)" : "(" "X*" : "X\\(*\\)" ")"', {OUT => '1'}], - ['bre16', '"abc" : "\\(\\)"', {OUT => ''}, {EXIT => 1}], - ['bre17', '"{1}a" : "\\(\\{1\\}a\\)"', {OUT => '{1}a'}], - ['bre18', '"X*" : "X\\(*\\)" : "^*"', {OUT => '1'}], - ['bre19', '"{1}" : "^\\{1\\}"', {OUT => '3'}], - ['bre20', '"{" : "{"', {OUT => '1'}], - ['bre21', '"abbcbd" : "a\\(b*\\)c\\1d"', {OUT => ''}, {EXIT => 1}], - ['bre22', '"abbcbbbd" : "a\\(b*\\)c\\1d"', {OUT => ''}, {EXIT => 1}], - ['bre23', '"abc" : "\\(.\\)\\1"', {OUT => ''}, {EXIT => 1}], - ['bre24', '"abbccd" : "a\\(\\([bc]\\)\\2\\)*d"', {OUT => 'cc'}], - ['bre25', '"abbcbd" : "a\\(\\([bc]\\)\\2\\)*d"', - {OUT => ''}, {EXIT => 1}], - ['bre26', '"abbbd" : "a\\(\\(b\\)*\\2\\)*d"', {OUT => 'bbb'}], - ['bre27', '"aabcd" : "\\(a\\)\\1bcd"', {OUT => 'a'}], - ['bre28', '"aabcd" : "\\(a\\)\\1bc*d"', {OUT => 'a'}], - ['bre29', '"aabd" : "\\(a\\)\\1bc*d"', {OUT => 'a'}], - ['bre30', '"aabcccd" : "\\(a\\)\\1bc*d"', {OUT => 'a'}], - ['bre31', '"aabcccd" : "\\(a\\)\\1bc*[ce]d"', {OUT => 'a'}], - ['bre32', '"aabcccd" : "\\(a\\)\\1b\\(c\\)*cd\$"', {OUT => 'a'}], - ['bre33', '"a*b" : "a\\(*\\)b"', {OUT => '*'}], - ['bre34', '"ab" : "a\\(**\\)b"', {OUT => ''}, {EXIT => 1}], - ['bre35', '"ab" : "a\\(***\\)b"', {OUT => ''}, {EXIT => 1}], - ['bre36', '"*a" : "*a"', {OUT => '2'}], - ['bre37', '"a" : "**a"', {OUT => '1'}], - ['bre38', '"a" : "***a"', {OUT => '1'}], - ['bre39', '"ab" : "a\\{1\\}b"', {OUT => '2'}], - ['bre40', '"ab" : "a\\{1,\\}b"', {OUT => '2'}], - ['bre41', '"aab" : "a\\{1,2\\}b"', {OUT => '3'}], - ['bre42', '_ : "a\\{1"', - {ERR => "$prog: Unmatched \\{\n"}, {EXIT => 2}], - ['bre43', '_ : "a\\{1a"', - {ERR => "$prog: Unmatched \\{\n"}, {EXIT => 2}], - ['bre44', '_ : "a\\{1a\\}"', - {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}], - ['bre45', '"a" : "a\\{,2\\}"', {OUT => '1'}], - ['bre46', '"a" : "a\\{,\\}"', {OUT => '1'}], - ['bre47', '_ : "a\\{1,x\\}"', - {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}], - ['bre48', '_ : "a\\{1,x"', - {ERR => "$prog: Unmatched \\{\n"}, {EXIT => 2}], - ['bre49', '_ : "a\\{32768\\}"', - {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}], - ['bre50', '_ : "a\\{1,0\\}"', - {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}], - ['bre51', '"acabc" : ".*ab\\{0,0\\}c"', {OUT => '2'}], - ['bre52', '"abcac" : "ab\\{0,1\\}c"', {OUT => '3'}], - ['bre53', '"abbcac" : "ab\\{0,3\\}c"', {OUT => '4'}], - ['bre54', '"abcac" : ".*ab\\{1,1\\}c"', {OUT => '3'}], - ['bre55', '"abcac" : ".*ab\\{1,3\\}c"', {OUT => '3'}], - ['bre56', '"abbcabc" : ".*ab\{2,2\}c"', {OUT => '4'}], - ['bre57', '"abbcabc" : ".*ab\{2,4\}c"', {OUT => '4'}], - ['bre58', '"aa" : "a\\{1\\}\\{1\\}"', {OUT => '1'}], - ['bre59', '"aa" : "a*\\{1\\}"', {OUT => '2'}], - ['bre60', '"aa" : "a\\{1\\}*"', {OUT => '2'}], - ['bre61', '"acd" : "a\\(b\\)?c\\1d"', {OUT => ''}, {EXIT => 1}], - ['bre62', '-- "-5" : "-\\{0,1\\}[0-9]*\$"', {OUT => '2'}], - - ['fail-b', '9 9', {ERR => "$prog: syntax error\n"}, - {EXIT => 2}], - ['fail-c', {ERR => "$prog: missing operand\n" - . "Try `$prog --help' for more information.\n"}, - {EXIT => 2}], - ); - -# Append a newline to end of each expected `OUT' string. -my $t; -foreach $t (@Tests) - { - my $arg1 = $t->[1]; - my $e; - foreach $e (@$t) - { - $e->{OUT} .= "\n" - if ref $e eq 'HASH' and exists $e->{OUT}; - } - } - -my $save_temps = $ENV{SAVE_TEMPS}; -my $verbose = $ENV{VERBOSE}; - -my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose); -exit $fail; -EOF diff --git a/tests/misc/Makefile.am b/tests/misc/Makefile.am index 9555636f9..f1775d85e 100644 --- a/tests/misc/Makefile.am +++ b/tests/misc/Makefile.am @@ -66,6 +66,7 @@ TESTS = \ df \ dirname \ expand \ + expr \ false-status \ fold \ groups-version \ diff --git a/tests/misc/expr b/tests/misc/expr new file mode 100755 index 000000000..2a7f4c0d5 --- /dev/null +++ b/tests/misc/expr @@ -0,0 +1,185 @@ +#!/bin/sh +# -*-perl-*- +# Basic tests for "expr". + +# Copyright (C) 2001, 2003-2007 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +: ${PERL=perl} +: ${srcdir=.} + +$PERL -e 1 > /dev/null 2>&1 || { + echo 1>&2 "$0: configure didn't find a usable version of Perl," \ + "so can't run this test" + exit 77 +} + +me=`echo $0|sed 's,.*/,,'` +exec $PERL -w -I$srcdir/.. -MCoreutils -M"CuTmpdir qw($me)" -- - << \EOF +require 5.003; +use strict; + +(my $program_name = $0) =~ s|.*/||; +my $prog = 'expr'; + +# Turn off localisation of executable's ouput. +@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; + +my @Tests = + ( + ['a', '5 + 6', {OUT => '11'}], + ['b', '5 - 6', {OUT => '-1'}], + ['c', '5 \* 6', {OUT => '30'}], + ['d', '100 / 6', {OUT => '16'}], + ['e', '100 % 6', {OUT => '4'}], + ['f', '3 + -2', {OUT => '1'}], + ['g', '-2 + -2', {OUT => '-4'}], + + ['paren1', '\( 100 % 6 \)', {OUT => '4'}], + ['paren2', '\( 100 % 6 \) - 8', {OUT => '-4'}], + ['paren3', '9 / \( 100 % 6 \) - 8', {OUT => '-6'}], + ['paren4', '9 / \( \( 100 % 6 \) - 8 \)', {OUT => '-2'}], + ['paren5', '9 + \( 100 % 6 \)', {OUT => '13'}], + + # Before 2.0.12, this would output `1'. + ['0bang', '00 \< 0!', {OUT => '0'}, {EXIT => 1}], + + # In 5.1.3 and earlier, these would exit with status 0. + ['00', '00', {OUT => '00'}, {EXIT => 1}], + ['minus0', '-0', {OUT => '-0'}, {EXIT => 1}], + + # In 5.1.3 and earlier, these would report errors. + ['andand', '0 \& 1 / 0', {OUT => '0'}, {EXIT => 1}], + ['oror', '1 \| 1 / 0', {OUT => '1'}, {EXIT => 0}], + + # In 5.1.3 and earlier, this would output the empty string. + ['orempty', '"" \| ""', {OUT => '0'}, {EXIT => 1}], + + # This evoked a syntax error diagnostic before 2.0.12. + ['minus2', '-- 2 + 2', {OUT => '4'}], + + # This erroneously succeeded and output `3' before 2.0.12. + ['fail-a', '3 + -', {ERR => "$prog: non-numeric argument\n"}, + {EXIT => 2}], + + # This erroneously succeeded before 5.3.1. + ['bigcmp', '-- -2417851639229258349412352 \< 2417851639229258349412352', + {OUT => '1'}, {EXIT => 0}], + + # In 5.94 and earlier, anchors incorrectly matched newlines. + ['anchor', "'a\nb' : 'a\$'", {OUT => '0'}, {EXIT => 1}], + + # These tests are taken from grep/tests/bre.tests. + ['bre1', '"abc" : "a\\(b\\)c"', {OUT => 'b'}], + ['bre2', '"a(" : "a("', {OUT => '2'}], + ['bre3', '_ : "a\\("', + {ERR => "$prog: Unmatched ( or \\(\n"}, {EXIT => 2}], + ['bre4', '_ : "a\\(b"', + {ERR => "$prog: Unmatched ( or \\(\n"}, {EXIT => 2}], + ['bre5', '"a(b" : "a(b"', {OUT => '3'}], + ['bre6', '"a)" : "a)"', {OUT => '2'}], + ['bre7', '_ : "a\\)"', + {ERR => "$prog: Unmatched ) or \\)\n"}, {EXIT => 2}], + ['bre8', '_ : "\\)"', + {ERR => "$prog: Unmatched ) or \\)\n"}, {EXIT => 2}], + ['bre9', '"ab" : "a\\(\\)b"', {OUT => ''}, {EXIT => 1}], + ['bre10', '"a^b" : "a^b"', {OUT => '3'}], + ['bre11', '"a\$b" : "a\$b"', {OUT => '3'}], + ['bre12', '"" : "\\($\\)\\(^\\)"', {OUT => ''}, {EXIT => 1}], + ['bre13', '"b" : "a*\\(^b\$\\)c*"', {OUT => 'b'}], + ['bre14', '"X|" : "X\\(|\\)" : "(" "X|" : "X\\(|\\)" ")"', {OUT => '1'}], + ['bre15', '"X*" : "X\\(*\\)" : "(" "X*" : "X\\(*\\)" ")"', {OUT => '1'}], + ['bre16', '"abc" : "\\(\\)"', {OUT => ''}, {EXIT => 1}], + ['bre17', '"{1}a" : "\\(\\{1\\}a\\)"', {OUT => '{1}a'}], + ['bre18', '"X*" : "X\\(*\\)" : "^*"', {OUT => '1'}], + ['bre19', '"{1}" : "^\\{1\\}"', {OUT => '3'}], + ['bre20', '"{" : "{"', {OUT => '1'}], + ['bre21', '"abbcbd" : "a\\(b*\\)c\\1d"', {OUT => ''}, {EXIT => 1}], + ['bre22', '"abbcbbbd" : "a\\(b*\\)c\\1d"', {OUT => ''}, {EXIT => 1}], + ['bre23', '"abc" : "\\(.\\)\\1"', {OUT => ''}, {EXIT => 1}], + ['bre24', '"abbccd" : "a\\(\\([bc]\\)\\2\\)*d"', {OUT => 'cc'}], + ['bre25', '"abbcbd" : "a\\(\\([bc]\\)\\2\\)*d"', + {OUT => ''}, {EXIT => 1}], + ['bre26', '"abbbd" : "a\\(\\(b\\)*\\2\\)*d"', {OUT => 'bbb'}], + ['bre27', '"aabcd" : "\\(a\\)\\1bcd"', {OUT => 'a'}], + ['bre28', '"aabcd" : "\\(a\\)\\1bc*d"', {OUT => 'a'}], + ['bre29', '"aabd" : "\\(a\\)\\1bc*d"', {OUT => 'a'}], + ['bre30', '"aabcccd" : "\\(a\\)\\1bc*d"', {OUT => 'a'}], + ['bre31', '"aabcccd" : "\\(a\\)\\1bc*[ce]d"', {OUT => 'a'}], + ['bre32', '"aabcccd" : "\\(a\\)\\1b\\(c\\)*cd\$"', {OUT => 'a'}], + ['bre33', '"a*b" : "a\\(*\\)b"', {OUT => '*'}], + ['bre34', '"ab" : "a\\(**\\)b"', {OUT => ''}, {EXIT => 1}], + ['bre35', '"ab" : "a\\(***\\)b"', {OUT => ''}, {EXIT => 1}], + ['bre36', '"*a" : "*a"', {OUT => '2'}], + ['bre37', '"a" : "**a"', {OUT => '1'}], + ['bre38', '"a" : "***a"', {OUT => '1'}], + ['bre39', '"ab" : "a\\{1\\}b"', {OUT => '2'}], + ['bre40', '"ab" : "a\\{1,\\}b"', {OUT => '2'}], + ['bre41', '"aab" : "a\\{1,2\\}b"', {OUT => '3'}], + ['bre42', '_ : "a\\{1"', + {ERR => "$prog: Unmatched \\{\n"}, {EXIT => 2}], + ['bre43', '_ : "a\\{1a"', + {ERR => "$prog: Unmatched \\{\n"}, {EXIT => 2}], + ['bre44', '_ : "a\\{1a\\}"', + {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}], + ['bre45', '"a" : "a\\{,2\\}"', {OUT => '1'}], + ['bre46', '"a" : "a\\{,\\}"', {OUT => '1'}], + ['bre47', '_ : "a\\{1,x\\}"', + {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}], + ['bre48', '_ : "a\\{1,x"', + {ERR => "$prog: Unmatched \\{\n"}, {EXIT => 2}], + ['bre49', '_ : "a\\{32768\\}"', + {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}], + ['bre50', '_ : "a\\{1,0\\}"', + {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}], + ['bre51', '"acabc" : ".*ab\\{0,0\\}c"', {OUT => '2'}], + ['bre52', '"abcac" : "ab\\{0,1\\}c"', {OUT => '3'}], + ['bre53', '"abbcac" : "ab\\{0,3\\}c"', {OUT => '4'}], + ['bre54', '"abcac" : ".*ab\\{1,1\\}c"', {OUT => '3'}], + ['bre55', '"abcac" : ".*ab\\{1,3\\}c"', {OUT => '3'}], + ['bre56', '"abbcabc" : ".*ab\{2,2\}c"', {OUT => '4'}], + ['bre57', '"abbcabc" : ".*ab\{2,4\}c"', {OUT => '4'}], + ['bre58', '"aa" : "a\\{1\\}\\{1\\}"', {OUT => '1'}], + ['bre59', '"aa" : "a*\\{1\\}"', {OUT => '2'}], + ['bre60', '"aa" : "a\\{1\\}*"', {OUT => '2'}], + ['bre61', '"acd" : "a\\(b\\)?c\\1d"', {OUT => ''}, {EXIT => 1}], + ['bre62', '-- "-5" : "-\\{0,1\\}[0-9]*\$"', {OUT => '2'}], + + ['fail-b', '9 9', {ERR => "$prog: syntax error\n"}, + {EXIT => 2}], + ['fail-c', {ERR => "$prog: missing operand\n" + . "Try `$prog --help' for more information.\n"}, + {EXIT => 2}], + ); + +# Append a newline to end of each expected `OUT' string. +my $t; +foreach $t (@Tests) + { + my $arg1 = $t->[1]; + my $e; + foreach $e (@$t) + { + $e->{OUT} .= "\n" + if ref $e eq 'HASH' and exists $e->{OUT}; + } + } + +my $save_temps = $ENV{SAVE_TEMPS}; +my $verbose = $ENV{VERBOSE}; + +my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose); +exit $fail; +EOF -- cgit v1.2.3-70-g09d2