1#!./perl 2 3use strict; 4use warnings; 5use utf8; 6use open qw( :utf8 :std ); 7 8chdir 't' if -d 't'; 9require q(./test.pl); plan(tests => 7); 10 11require mro; 12 13{ 14 package ᕘ; 15 our @ISA = qw//; 16} 17 18ok(!mro::get_pkg_gen('레알ឭ되s놑Eξsᴛ'), 19 "pkg_gen 0 for non-existent pkg"); 20 21my $f_gen = mro::get_pkg_gen('ᕘ'); 22ok($f_gen > 0, 'ᕘ pkg_gen > 0'); 23 24{ 25 no warnings 'once'; 26 *ᕘ::ᕘ_Ƒ운ℭ = sub { 123 }; 27} 28my $new_f_gen = mro::get_pkg_gen('ᕘ'); 29ok($new_f_gen > $f_gen, 'ᕘ pkg_gen incs for methods'); 30$f_gen = $new_f_gen; 31 32@ᕘ::ISA = qw/Bar/; 33$new_f_gen = mro::get_pkg_gen('ᕘ'); 34ok($new_f_gen > $f_gen, 'ᕘ pkg_gen incs for @ISA'); 35 36undef %ᕘ::; 37is(mro::get_pkg_gen('ᕘ'), 1, "pkg_gen 1 for undef %Pkg::"); 38 39delete $::{"ᕘ::"}; 40is(mro::get_pkg_gen('ᕘ'), 0, 'pkg_gen 0 for delete $::{Pkg::}'); 41 42delete $::{"ㄑଊx::"}; 43push @ㄑଊx::ISA, "Woot"; # should not segfault 44ok(1, "No segfault on modification of ISA in a deleted stash"); 45