This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make it possible to have read-only glob copies
[perl5.git] / t / lib / universal.t
1 #!./perl
2
3 # Test the Internal::* functions and other tibits in universal.c
4
5 BEGIN {
6     chdir 't' if -d 't';
7     @INC = '../lib';
8     require './test.pl';
9     plan( tests => 5 );
10 }
11
12 for my $arg ('', 'q[]', qw( 1 undef )) {
13     fresh_perl_is(<<"----", <<'====', "Internals::* functions check their argument under func() AND &func() [perl #77776]");
14 sub tryit { eval shift or warn \$@ }
15 tryit "&Internals::SvREADONLY($arg)";
16 tryit "&Internals::SvREFCNT($arg)";
17 tryit "&Internals::hv_clear_placeholders($arg)";
18 tryit "&Internals::HvREHASH($arg)";
19 ----
20 Usage: Internals::SvREADONLY(SCALAR[, ON]) at (eval 1) line 1.
21 Usage: Internals::SvREFCNT(SCALAR[, REFCOUNT]) at (eval 2) line 1.
22 Usage: Internals::hv_clear_placeholders(hv) at (eval 3) line 1.
23 Internals::HvREHASH $hashref at (eval 4) line 1.
24 ====
25 }
26
27 # Various conundrums with SvREADONLY
28
29 $x = *foo;
30 Internals::SvREADONLY $x, 1;
31 eval { $x = [] };
32 like $@, qr/Modification of a read-only value attempted at/,
33     'read-only glob copies';