Bug#379757: [PATCH 1/2] Add tests to verify that h2ph output compiles and is warning free

Niko Tyni ntyni at debian.org
Tue Apr 14 19:55:33 UTC 2009


The #include directives are #ifdef'd out so that running the
resulting code does not actually need the headers. We still
get the same effect from comparing with the expected h2ph output.
---
 lib/h2ph.t     |   10 +++++++++-
 t/lib/h2ph.h   |    2 ++
 t/lib/h2ph.pht |   20 +++++++++++---------
 3 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/lib/h2ph.t b/lib/h2ph.t
index 7b339b3..e303406 100755
--- a/lib/h2ph.t
+++ b/lib/h2ph.t
@@ -15,7 +15,7 @@ if (!(-e $extracted_program)) {
     exit 0;
 }
 
-print "1..2\n";
+print "1..4\n";
 
 # quickly compare two text files
 sub txt_compare {
@@ -32,6 +32,14 @@ print(($ok == 0 ? "" : "not "), "ok 1\n");
 $ok = txt_compare("lib/h2ph.ph", "lib/h2ph.pht");
 print(($ok == 0 ? "" : "not "), "ok 2\n");
     
+# does the output compile?
+$ok = system($^X, "-I../lib", "lib/h2ph.pht");
+print(($ok == 0 ? "" : "not "), "ok 3\n");
+
+# is the output warning free?
+$ok = system($^X, "-w", "-I../lib", "-e", '$SIG{__WARN__} = sub { die $_[0] }; require "lib/h2ph.pht"');
+print(($ok == 0 ? "" : "not "), "ok 4\n");
+
 # cleanup - should this be in an END block?
 unlink("lib/h2ph.ph");
 unlink("_h2ph_pre.ph");
diff --git a/t/lib/h2ph.h b/t/lib/h2ph.h
index 495789a..23f259e 100644
--- a/t/lib/h2ph.h
+++ b/t/lib/h2ph.h
@@ -68,9 +68,11 @@ function Tru64_Pascal(n: Integer): Integer;
  *  with `use lib qw(/opt/perl5/lib/site_perl/i586-linux/linux);' or whatever
  *  your equivalent is...
  */
+#if 0
 #include <sys/socket.h>
 #import "sys/ioctl.h"
 #include_next <sys/fcntl.h>
+#endif
 
 /* typedefs should be ignored */
 typedef struct a_struct {
diff --git a/t/lib/h2ph.pht b/t/lib/h2ph.pht
index 145e682..01db98d 100644
--- a/t/lib/h2ph.pht
+++ b/t/lib/h2ph.pht
@@ -47,15 +47,17 @@ unless(defined(&_H2PH_H_)) {
     } else {
 	eval 'sub WHATEVER () {1000;}' unless defined(&WHATEVER);
     }
-    require 'sys/socket.ph';
-    require 'sys/ioctl.ph';
-    eval {
-	my(@REM);
-	my(%INCD) = map { $INC{$_} => 1 } (grep { $_ eq "sys/fcntl.ph" } keys(%INC));
-	@REM = map { "$_/sys/fcntl.ph" } (grep { not exists($INCD{"$_/sys/fcntl.ph"}) and -f "$_/sys/fcntl.ph" } @INC);
-	require "$REM[0]" if @REM;
-    };
-    warn($@) if $@;
+    if(0) {
+	require 'sys/socket.ph';
+	require 'sys/ioctl.ph';
+	eval {
+	    my(@REM);
+	    my(%INCD) = map { $INC{$_} => 1 } (grep { $_ eq "sys/fcntl.ph" } keys(%INC));
+	    @REM = map { "$_/sys/fcntl.ph" } (grep { not exists($INCD{"$_/sys/fcntl.ph"}) and -f "$_/sys/fcntl.ph" } @INC);
+	    require "$REM[0]" if @REM;
+	};
+	warn($@) if $@;
+    }
     eval("sub sun () { 0; }") unless defined(&sun);
     eval("sub mon () { 1; }") unless defined(&mon);
     eval("sub tue () { 2; }") unless defined(&tue);
-- 
1.5.6.5







More information about the Perl-maintainers mailing list