This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
40f794d068c8ded42dbf785244a67fcdf5a68ce5
[perl5.git] / t / op / require_override.t
1 #!perl
2 use strict;
3 use warnings;
4
5 BEGIN {
6     chdir 't';
7     require './test.pl';
8 }
9
10 plan(tests => 6);
11
12 my @warns;
13 local $SIG{__WARN__}= sub { push @warns, $_[0] };
14 my $error;
15
16 eval "require; 1" or $error = $@;
17 ok(1, "Check that eval 'require' does not segv");
18 ok(0 == @warns, "We expect the eval to die, without producing warnings");
19 like($error, qr/Missing or undefined argument to require/, "Make sure we got the error we expect");
20
21 @warns= ();
22 $error= undef;
23
24 *CORE::GLOBAL::require = *CORE::GLOBAL::require = sub { };
25 eval "require; 1" or $error = $@;
26 ok(1, "Check that eval 'require' on overloaded require does not segv");
27 ok(0 == @warns, "We expect the eval to die, without producing warnings");
28
29 # NOTE! The following test does NOT represent a commitment or promise that the following logic is
30 # the *right* thing to do. It may well not be. But this is how it works now, and we want to test it.
31 # IOW, do not use this test as the basis to argue that this is how it SHOULD work. Thanks, yves.
32 ok(!defined($error), "We do not expect the overloaded version of require to die from no arguments");
33
34
35