This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Uncomment and fix up tests at the end of Storable's blessed.t
[perl5.git] / t / mro / pkg_gen.t
1 #!./perl
2
3 use strict;
4 use warnings;
5
6 chdir 't' if -d 't';
7 require q(./test.pl); plan(tests => 7);
8
9 require mro;
10
11 {
12     package Foo;
13     our @ISA = qw//;
14 }
15
16 ok(!mro::get_pkg_gen('ReallyDoesNotExist'),
17     "pkg_gen 0 for non-existant pkg");
18
19 my $f_gen = mro::get_pkg_gen('Foo');
20 ok($f_gen > 0, 'Foo pkg_gen > 0');
21
22 {
23     no warnings 'once';
24     *Foo::foo_func = sub { 123 };
25 }
26 my $new_f_gen = mro::get_pkg_gen('Foo');
27 ok($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');
32 ok($new_f_gen > $f_gen, 'Foo pkg_gen incs for @ISA');
33
34 undef %Foo::;
35 is(mro::get_pkg_gen('Foo'), 1, "pkg_gen 1 for undef %Pkg::");
36
37 delete $::{"Foo::"};
38 is(mro::get_pkg_gen('Foo'), 0, 'pkg_gen 0 for delete $::{Pkg::}');
39
40 delete $::{"Quux::"};
41 push @Quux::ISA, "Woot"; # should not segfault
42 ok(1, "No segfault on modification of ISA in a deleted stash");