summaryrefslogtreecommitdiff
path: root/t/comp
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1998-02-10 13:21:37 -0500
committerGurusamy Sarathy <gsar@cpan.org>1998-02-12 03:09:58 +0000
commitf46d017c815b0d11f074ad6c16247c01f8af2ece (patch)
treeb47db1bbab27e93a3f24e5114c769c4c8ebe7351 /t/comp
parent301d9039fb19ffce344369e333240632e80d95d5 (diff)
downloadperl-f46d017c815b0d11f074ad6c16247c01f8af2ece.tar.gz
[win32] fix extra LEAVE when require fails
Message-Id: <199802102321.SAA15346@aatma.engin.umich.edu> Subject: Re: evals and requires make seg-fault with bad require file p4raw-id: //depot/win32/perl@498
Diffstat (limited to 't/comp')
-rw-r--r--t/comp/require.t36
1 files changed, 36 insertions, 0 deletions
diff --git a/t/comp/require.t b/t/comp/require.t
new file mode 100644
index 0000000000..bae0712dfa
--- /dev/null
+++ b/t/comp/require.t
@@ -0,0 +1,36 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = ('.');
+}
+
+# don't make this lexical
+$i = 1;
+print "1..3\n";
+
+sub do_require {
+ %INC = ();
+ open(REQ,">bleah.pm") or die "Can't write 'bleah.pm': $!";
+ print REQ @_;
+ close REQ;
+ eval { require "bleah.pm" };
+ my @a; # magic guard for scope violations (must be first lexical in file)
+}
+
+# run-time failure in require
+do_require "0;\n";
+print "# $@\nnot " unless $@ =~ /did not return a true/;
+print "ok ",$i++,"\n";
+
+# compile-time failure in require
+do_require "1)\n";
+print "# $@\nnot " unless $@ =~ /syntax error/;
+print "ok ",$i++,"\n";
+
+# successful require
+do_require "1";
+print "# $@\nnot " if $@;
+print "ok ",$i++,"\n";
+
+unlink 'bleah.pm';