4 use warnings FATAL => 'all';
5 use File::Path qw(mkpath);
9 my($moose_dir, $result) = @ARGV;
10 unless(defined $moose_dir and -d "$moose_dir/t") {
11 die "Usage: $0 Moose-dir result-dir\n";
13 $result //= 'Moose-test';
15 die "'$result' exists, stopped";
20 (my $mouse_test = $_) =~ s{\A $moose_dir/t }{$result}xmso;
21 (my $mouse_failing_test = $_) =~ s{\A $moose_dir/t }{$result-failing}xmso;
23 mkpath [$mouse_test, $mouse_failing_test];
26 copy_as_mouse($_ => $mouse_test);
27 push @tests, [$mouse_test, $mouse_failing_test]
28 if $mouse_test =~/\.t\z/xms;
32 find { wanted => \&wanted, no_chdir => 1 }, "$moose_dir/t/";
36 $ENV{PERL5LIB} = join ':', "$result/lib", @INC;
39 foreach my $t(sort { $b cmp $a } @tests) {
40 my($t, $fail) = @{$t};
41 if(system(qq{$^X $t 2>&1 >/dev/null}) == 0) {
46 # make it TODO and retyr it
48 open my $out, '>', "/tmp/retry.t.$$";
52 && say $out '$TODO = q{Mouse is not yet completed};';
57 rename "/tmp/retry.t.$$", $t;
59 if(system(qq{$^X $t 2>&1 >/dev/null}) == 0) {
60 say "$t ... ok (TODO)";
69 say sprintf "%d %% (%d/%d) succeed.", ($ok/@tests)*100, $ok, scalar @tests;
72 my($moose, $mouse) = @_;
73 open my $in, '<', $moose;
74 open my $out, '>', $mouse;
78 say $out 'use t::lib::MooseCompat;';
80 s/\b Class::MOP::([a-z_]+) \b/Mouse::Util::$1/xmsg;
81 s/\b Class::MOP \b /Mouse::Meta/xmsg;
82 s/\b Moose \b/Mouse/xmsg;
85 s{\b(Mouse::Meta::TypeConstraint)::\w+ }{$1}xmsg;
86 s{\b(Mouse::Meta::Role::Application)::\w+ }{$1}xmsg;
87 s{\b(Mouse::Meta::Method)::\w+ }{$1}xmsg;