summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/basename/basic68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/basename/basic b/tests/basename/basic
new file mode 100755
index 000000000..7515ccbd0
--- /dev/null
+++ b/tests/basename/basic
@@ -0,0 +1,68 @@
+#!/bin/sh
+# This is really a -*-perl-*- script
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+case "$PERL" in
+ *'missing perl')
+ echo 1>&2 "$0: configure didn't find a usable version of Perl,"
+ "so can't run this test"
+ # '
+ exit 77
+ ;;
+esac
+
+exec $PERL -w -I$srcdir/.. -MFetish -- - << \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 =
+ (
+ ['fail-1', {ERR => "$prog: too few arguments\n"
+ . "Try `$prog --help' for more information.\n"}, {EXIT => '1'}],
+ ['fail-2', qw(a a a), {ERR => "$prog: too many arguments\n"
+ . "Try `$prog --help' for more information.\n"}, {EXIT => '1'}],
+
+ ['a', qw(d/f), {OUT => 'f'}],
+ ['b', qw(a/b), {OUT => 'b'}],
+ ['c', qw(a/b/), {OUT => 'b'}],
+ ['d', qw(a/b//), {OUT => 'b'}],
+ ['e', qw(a), {OUT => 'a'}],
+ ['f', qw(/), {OUT => '/'}],
+ ['g', qw(//), {OUT => '/'}],
+ ['h', qw(///), {OUT => '/'}],
+ ['i', qw(///a///), {OUT => 'a'}],
+ ['1', qw(f.s .s), {OUT => 'f'}],
+ ['2', qw(fs s), {OUT => 'f'}],
+ ['3', qw(fs fs), {OUT => 'fs'}],
+ ['4', qw(fs fs), {OUT => 'fs'}],
+ ['5', qw(dir/file.suf .suf), {OUT => 'file'}],
+ );
+
+# 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} = "$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