summaryrefslogtreecommitdiff
path: root/lib/h2xs.t
diff options
context:
space:
mode:
authorPrymmer/Kahn <pvhp@best.com>2001-06-21 17:03:24 -0700
committerJarkko Hietaniemi <jhi@iki.fi>2001-06-22 12:13:37 +0000
commit3a9c887ec5858f682dcfa670925a52c00d6a8199 (patch)
tree95f5b58322c5cf9d4459cef0f65f1e6cceb58a90 /lib/h2xs.t
parent76f26e3591a8243af871f7d09fe437dffde7a28b (diff)
downloadperl-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.t117
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);
+