This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add parallel support 4 Win32 dmake-COREDIR parallelism part 2
[perl5.git] / lib / h2ph.t
1 #!./perl
2 use strict;
3
4 # quickie tests to see if h2ph actually runs and does more or less what is
5 # expected
6
7 BEGIN {
8     chdir 't' if -d 't';
9     @INC = '../lib';
10 }
11
12 require './test.pl';
13
14 my $extracted_program = '../utils/h2ph'; # unix, nt, ...
15 if ($^O eq 'VMS') { $extracted_program = '[-.utils]h2ph.com'; }
16 if (!(-e $extracted_program)) {
17     print "1..0 # Skip: $extracted_program was not built\n";
18     exit 0;
19 }
20
21 plan(6);
22
23 # quickly compare two text files
24 sub txt_compare {
25     local $/;
26     my ($A, $B);
27     for (($A,$B) = @_) { open(_,"<$_") ? $_ = <_> : die "$_ : $!"; close _ }
28     $A cmp $B;
29 }
30
31 my $result = runperl( progfile => $extracted_program,
32                       stderr => 1,
33                       args => ['-d.', '-Q', 'lib/h2ph.h']);
34 is( $result, '', "output is free of warnings" );
35 is( $?, 0, "$extracted_program runs successfully" );
36
37 is ( txt_compare("lib/h2ph.ph", "lib/h2ph.pht"),
38      0,
39      "generated file has expected contents" );
40
41 $result = runperl( progfile => 'lib/h2ph.pht',
42                    switches => ['-c'],
43                    stderr => 1 );
44 like( $result, qr/syntax OK$/, "output compiles");
45
46 $result = runperl( progfile => '_h2ph_pre.ph',
47                    switches => ['-c'],
48                    stderr => 1 );
49 like( $result, qr/syntax OK$/, "preamble compiles");
50
51 $result = runperl( switches => ['-I.', "-w"],
52                    stderr => 1,
53                    prog => <<'PROG' );
54 $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);
55 PROG
56 is( $result, '', "output free of warnings" );
57
58 # cleanup
59 END {
60     1 while unlink("lib/h2ph.ph");
61     1 while unlink("_h2ph_pre.ph");
62 }