diff options
author | Jim Meyering <meyering@redhat.com> | 2008-05-12 14:43:23 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2008-05-17 08:28:59 +0200 |
commit | 51243cdacacbde2c020846c22d81ab435f2f1f22 (patch) | |
tree | 21a5891547493a54d14e27caf218cfcaa3ecf544 | |
parent | 1081bbc74e48010700783a9bb82a4657d1d02bd2 (diff) | |
download | coreutils-51243cdacacbde2c020846c22d81ab435f2f1f22.tar.xz |
test invalid-option handling in all programs
* tests/Makefile.am (TESTS): Add misc/invalid-opt.
* tests/misc/invalid-opt: New file.
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rwxr-xr-x | tests/misc/invalid-opt | 96 |
2 files changed, 97 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 396ee05a8..bddf6e100 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -70,6 +70,7 @@ EXTRA_DIST += $(TESTS) TESTS = \ misc/help-version \ + misc/invalid-opt \ rm/cycle \ chmod/no-x \ chgrp/basic \ diff --git a/tests/misc/invalid-opt b/tests/misc/invalid-opt new file mode 100755 index 000000000..569a027e7 --- /dev/null +++ b/tests/misc/invalid-opt @@ -0,0 +1,96 @@ +#!/usr/bin/perl +# exercise the 'invalid option' handling code in each program + +# Copyright (C) 2008 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 <http://www.gnu.org/licenses/>. + +require 5.003; +use strict; + +# Turn off localization of executable's output. +@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; + +my %exit_status = + ( + ls => 2, + dir => 2, + vdir => 2, + test => 2, + echo => 0, + expr => 0, + nohup => 127, + sort => 2, + test => 0, + true => 0, + tty => 2, + printf => 0, + printenv => 2, + ); + +my %expected_out = + ( + echo => "-/\n", + expr => "-/\n", + printf => "-/", + ); + +my %expected_err = + ( + false => '', + stty => '', + ); + +my $fail = 0; +my @built_programs = split ' ', $ENV{built_programs}; +foreach my $prog (@built_programs) + { + $prog eq '[' + and next; + + my $try = "Try \`$prog --help' for more information.\n"; + my $x = $exit_status{$prog}; + defined $x + or $x = 1; + + my $out = $expected_out{$prog}; + defined $out + or $out = ''; + + my $err = $expected_err{$prog}; + defined $err + or $err = $x == 0 ? '' : "$prog: invalid option -- /\n$try"; + + # Accommodate different syntax in glibc's getopt + # diagnostics by filtering out single quotes. + my $err_subst = "s,'/',/,"; + + # Depending on how this script is run, stty emits different + # diagnostics. Don't bother checking them. + $prog eq 'stty' + and $err_subst = 's/(.|\n)*//ms'; + + my @Tests = (["$prog-invalid-opt", '-/', {OUT=>$out}, + {ERR_SUBST => $err_subst}, + {EXIT=>$x}, {ERR=>$err}]); + + my $save_temps = $ENV{DEBUG}; + my $verbose = $ENV{VERBOSE}; + + my $f = run_tests ($prog, \$prog, \@Tests, $save_temps, $verbose); + $f + and $fail = 1; + } + +exit $fail; |