diff options
author | Prymmer/Kahn <pvhp@best.com> | 2001-06-21 17:03:24 -0700 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-06-22 12:13:37 +0000 |
commit | 3a9c887ec5858f682dcfa670925a52c00d6a8199 (patch) | |
tree | 95f5b58322c5cf9d4459cef0f65f1e6cceb58a90 /lib/h2xs.t | |
parent | 76f26e3591a8243af871f7d09fe437dffde7a28b (diff) | |
download | perl-3a9c887ec5858f682dcfa670925a52c00d6a8199.tar.gz |
trigraphs and tests for h2xs
Message-ID: <Pine.BSF.4.21.0106212354510.6026-100000@shell8.ba.best.com>
p4raw-id: //depot/perl@10820
Diffstat (limited to 'lib/h2xs.t')
-rw-r--r-- | lib/h2xs.t | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/lib/h2xs.t b/lib/h2xs.t new file mode 100644 index 0000000000..d4c03d9471 --- /dev/null +++ b/lib/h2xs.t @@ -0,0 +1,117 @@ +#!./perl + +# Some quick tests to see if h2xs actually runs and creates files as +# expected. File contents include date stamps and/or usernames +# hence are not checked. File existence is checked with -e though. +# This test depends on File::Path::rmtree() to clean up with. +# - pvhp + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; +} + +use strict; +use File::Path; # for cleaning up with rmtree() + +my $extracted_program = '../utils/h2xs'; # unix, nt, ... +if ($^O eq 'VMS') { $extracted_program = '[-.utils]h2xs.com'; } +if ($^O eq 'MacOS') { $extracted_program = ':::utils:h2xs'; } +if (!(-e $extracted_program)) { + print "1..0 # Skip: $extracted_program was not built\n"; + exit 0; +} +# You might also wish to bail out if your perl platform does not +# do `$^X -e 'warn "Writing h2xst"' 2>&1`; duplicity. + +my $dupe = '2>&1'; # ok on unix, nt, VMS, ... +my $lib = '"-I../lib"'; # ok on unix, nt, The extra \" are for VMS +# The >&1 would create a file named &1 on MPW (STDERR && STDOUT are +# already merged). +if ($^O eq 'MacOS') { + $dupe = ''; + $lib = '-I::lib:'; +} +# $name should differ from system header file names and must +# not already be found in the t/ subdirectory for perl. +my $name = 'h2xst'; + +print "1..17\n"; + +my @result = (); +my $result = ''; +my $expectation = ''; + +# h2xs warns about what it is writing hence the (possibly unportable) +# 2>&1 dupe: +# does it run? +@result = `$^X $lib $extracted_program -f -n $name $dupe`; +print(((!$?) ? "" : "not "), "ok 1\n"); +$result = join("",@result); + +$expectation = <<"EOXSFILES"; +Writing $name/$name.pm +Writing $name/$name.xs +Writing $name/Makefile.PL +Writing $name/README +Writing $name/t/1.t +Writing $name/Changes +Writing $name/MANIFEST +EOXSFILES + +# accomodate MPW # comment character prependage +if ($^O eq 'MacOS') { + $result =~ s/#\s*//gs; +} + +#print "# expectation is >$expectation<\n"; +#print "# result is >$result<\n"; +# Was the output the list of files that were expected? +print((($result eq $expectation) ? "" : "not "), "ok 2\n"); +# Were the files created? +my $t = 3; +$expectation =~ s/Writing //; # remove leader +foreach (split(/Writing /,$expectation)) { + chomp; # remove \n + if ($^O eq 'MacOS') { $_ = ':' . join(':',split(/\//,$_)); } + print(((-e $_) ? "" : "not "), "ok $t\n"); + $t++; +} + +# clean up +rmtree($name); + +# does it run with -X and omit the h2xst.xs file? +@result = (); +$result = ''; +# The extra \" around -X are for VMS but do no harm on NT or Unix +@result = `$^X $lib $extracted_program \"-X\" -f -n $name $dupe`; +print(((!$?) ? "" : "not "), "ok $t\n"); +$t++; +$result = join("",@result); + +$expectation = <<"EONOXSFILES"; +Writing $name/$name.pm +Writing $name/Makefile.PL +Writing $name/README +Writing $name/t/1.t +Writing $name/Changes +Writing $name/MANIFEST +EONOXSFILES + +if ($^O eq 'MacOS') { $result =~ s/#\s*//gs; } +#print $expectation; +#print $result; +print((($result eq $expectation) ? "" : "not "), "ok $t\n"); +$t++; +$expectation =~ s/Writing //; # remove leader +foreach (split(/Writing /,$expectation)) { + chomp; # remove \n + if ($^O eq 'MacOS') { $_ = ':' . join(':',split(/\//,$_)); } + print(((-e $_) ? "" : "not "), "ok $t\n"); + $t++; +} + +# clean up +rmtree($name); + |