This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
TODO tests for reads from a scalar changed to upgraded after open
[perl5.git] / t / mro / pkg_gen.t
CommitLineData
70cd14a1
CB
1#!./perl
2
3use strict;
4use warnings;
5
6chdir 't' if -d 't';
5562fa71 7require q(./test.pl); plan(tests => 7);
70cd14a1 8
1e9bd118
NC
9require mro;
10
70cd14a1
CB
11{
12 package Foo;
13 our @ISA = qw//;
14}
15
16ok(!mro::get_pkg_gen('ReallyDoesNotExist'),
93f09d7b 17 "pkg_gen 0 for non-existent pkg");
70cd14a1
CB
18
19my $f_gen = mro::get_pkg_gen('Foo');
20ok($f_gen > 0, 'Foo pkg_gen > 0');
21
22{
23 no warnings 'once';
24 *Foo::foo_func = sub { 123 };
25}
26my $new_f_gen = mro::get_pkg_gen('Foo');
27ok($new_f_gen > $f_gen, 'Foo pkg_gen incs for methods');
28$f_gen = $new_f_gen;
29
30@Foo::ISA = qw/Bar/;
31$new_f_gen = mro::get_pkg_gen('Foo');
32ok($new_f_gen > $f_gen, 'Foo pkg_gen incs for @ISA');
33
34undef %Foo::;
35is(mro::get_pkg_gen('Foo'), 1, "pkg_gen 1 for undef %Pkg::");
36
37delete $::{"Foo::"};
38is(mro::get_pkg_gen('Foo'), 0, 'pkg_gen 0 for delete $::{Pkg::}');
5562fa71
RGS
39
40delete $::{"Quux::"};
41push @Quux::ISA, "Woot"; # should not segfault
42ok(1, "No segfault on modification of ISA in a deleted stash");