mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-04-12 15:06:44 +02:00
59 lines
2.2 KiB
Perl
Executable File
59 lines
2.2 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
require 5.003;
|
|
use strict;
|
|
|
|
my $program_name;
|
|
($program_name = $0) =~ s|.*/||;
|
|
|
|
# A file spec: a scalar or a reference to a single-keyed hash
|
|
# ================
|
|
# 'contents' contents only (file name is derived from test name)
|
|
# {filename => 'contents'} filename and contents
|
|
# {filename => undef} filename only -- $(srcdir)/filename must exist
|
|
# (FIXME: note to self: get $srcdir from ENV)
|
|
#
|
|
# FIXME: If there is more than one input file, the you can't specify REDIRECT.
|
|
# PIPE is still ok.
|
|
#
|
|
# I/O spec: a hash ref with the following properties
|
|
# ================
|
|
# - one key/value pair
|
|
# - the key must be one of these strings: IN, OUT, ERR, EXIT
|
|
# - the value must be a file spec
|
|
# {OUT => 'data'} put data in a temp file and compare it to stdout from cmd
|
|
# {OUT => {'filename'=>undef}} compare contents of existing filename to
|
|
# stdout from cmd
|
|
# Ditto for `ERR', but compare with stderr
|
|
# {EXIT => N} expect exit status of cmd to be N
|
|
#
|
|
# There may be many input file specs. File names from the input specs
|
|
# are concatenated in order on the command line.
|
|
# There may be at most one of the OUT-, ERR-, and EXIT-keyed specs.
|
|
# If the OUT-(or ERR)-keyed hash ref is omitted, then expect no output
|
|
# on stdout (or stderr).
|
|
# If the EXIT-keyed one is omitted, then expect the exit status to be zero.
|
|
|
|
my $q_bell = {IN => {"q\a" => ''}};
|
|
my @Tests =
|
|
(
|
|
# test-name options input expected-output
|
|
#
|
|
['q-', $q_bell, {OUT => "q\a\n"}],
|
|
['q-N', '-N', $q_bell, {OUT => "q\a\n"}],
|
|
['q-q', '-q', $q_bell, {OUT => "q?\n"}],
|
|
['q-Q', '-Q', $q_bell, {OUT => "\"q\\a\"\n"}],
|
|
|
|
['q-qs-lit', '--quoting=literal', $q_bell, {OUT => "q\a\n"}],
|
|
['q-qs-sh', '--quoting=shell', $q_bell, {OUT => "q\a\n"}],
|
|
['q-qs-sh-a', '--quoting=shell-always', $q_bell, {OUT => "'q\a'\n"}],
|
|
['q-qs-c', '--quoting=c', $q_bell, {OUT => "\"q\\a\"\n"}],
|
|
['q-qs-esc', '--quoting=escape', $q_bell, {OUT => "q\\a\n"}],
|
|
);
|
|
|
|
my $save_temps = 0;
|
|
my $verbose = $ENV{VERBOSE};
|
|
|
|
my $prog = $ENV{LS} || 'ls';
|
|
my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
|
|
exit $fail;
|