1#!./perl 2 3use strict; 4use warnings; 5 6chdir 't' if -d 't'; 7require q(./test.pl); plan(tests => 7); 8 9require mro; 10 11{ 12 package Foo; 13 our @ISA = qw//; 14} 15 16ok(!mro::get_pkg_gen('ReallyDoesNotExist'), 17 "pkg_gen 0 for non-existent pkg"); 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::}'); 39 40delete $::{"Quux::"}; 41push @Quux::ISA, "Woot"; # should not segfault 42ok(1, "No segfault on modification of ISA in a deleted stash"); 43