| 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(5); |
| 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 | args => ['-d.', '-Q', 'lib/h2ph.h']); |
| 33 | is( $?, 0, "$extracted_program runs successfully" ); |
| 34 | |
| 35 | is ( txt_compare("lib/h2ph.ph", "lib/h2ph.pht"), |
| 36 | 0, |
| 37 | "generated file has expected contents" ); |
| 38 | |
| 39 | $result = runperl( progfile => 'lib/h2ph.pht', |
| 40 | switches => ['-c'], |
| 41 | stderr => 1 ); |
| 42 | like( $result, qr/syntax OK$/, "output compiles"); |
| 43 | |
| 44 | $result = runperl( progfile => '_h2ph_pre.ph', |
| 45 | switches => ['-c'], |
| 46 | stderr => 1 ); |
| 47 | like( $result, qr/syntax OK$/, "preamble compiles"); |
| 48 | |
| 49 | $result = runperl( switches => ["-w"], |
| 50 | stderr => 1, |
| 51 | prog => <<'PROG' ); |
| 52 | $SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht); |
| 53 | PROG |
| 54 | is( $result, '', "output free of warnings" ); |
| 55 | |
| 56 | # cleanup |
| 57 | END { |
| 58 | 1 while unlink("lib/h2ph.ph"); |
| 59 | 1 while unlink("_h2ph_pre.ph"); |
| 60 | } |