4 use warnings FATAL => 'all';
5 use File::Path qw(mkpath);
7 use File::Basename qw(basename dirname);
10 my($moose_dir, $result) = @ARGV;
11 unless(defined $moose_dir and -d "$moose_dir/t") {
12 die "Usage: $0 Moose-dir [result-dir]\n";
14 $result //= 'Moose-t';
18 return if /native_traits/;
20 (my $basename = basename($file)) =~ s/Moose/Mouse/g;
21 $file = dirname($file) . '/' . $basename;
22 (my $test = $file) =~ s{\A $moose_dir/t }{$result}xmso;
23 (my $failing_test = $file) =~ s{\A $moose_dir/t }{$result-failing}xmso;
25 mkpath [$test, $failing_test];
28 copy_as_mouse($_ => $test);
29 push @tests, [$test, $failing_test]
30 if $file =~/\.t\z/xms;
34 find { wanted => \&wanted, no_chdir => 1 }, "$moose_dir/t/";
38 $ENV{PERL5LIB} = join ':', "$result/lib", @INC;
41 foreach my $t(sort { $b cmp $a } @tests) {
42 my($t, $fail) = @{$t};
43 if(system(qq{$^X $t 2>&1 >/dev/null}) == 0) {
48 # make it TODO and retyr it
50 open my $out, '>', "/tmp/retry.t.$$";
54 && say $out '$TODO = q{Mouse is not yet completed};';
59 rename "/tmp/retry.t.$$", $t;
61 if(system(qq{$^X $t 2>&1 >/dev/null}) == 0) {
62 say "$t ... ok (TODO)";
71 say sprintf "%d %% (%d/%d) succeed.", ($ok/@tests)*100, $ok, scalar @tests;
74 my($moose, $mouse) = @_;
75 open my $in, '<', $moose;
76 open my $out, '>', $mouse;
80 say $out "# This is automatically generated by $0.";
81 say $out "# DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!";
82 say $out 'use t::lib::MooseCompat;';
84 s/ Class::MOP::([a-z_]+) /Mouse::Util::$1/xmsg;
85 s/ Class::MOP /Mouse::Meta/xmsg;
89 s{\b(Mouse::Meta::TypeConstraint)::\w+ }{$1}xmsg;
90 s{\b(Mouse::Meta::Role::Application)::\w+ }{$1}xmsg;
91 s{\b(Mouse::Meta::Method)::\w+ }{$1}xmsg;