use Test::More;
use Test::Exception;
use Class::Unload;
+use IO::All;
+use Data::Dumper::Concise;
+use Data::Dump::Streamer;
my $compiler = MooseX::Antlers::Compiler->load_with_compiler('One');
+sub dump_meta {
+ my $meta = $_[0];
+ local $meta->{methods}{meta};
+ join '', Dump($meta);
+}
+
sub foo_called {
&cmp_ok(One->get_called_foo, '==', @_); # cmp_ok has a $$$;$ proto
}
my %orig_src = map +($_ => join '', Dump(One->can($_))), qw(new DESTROY foo);
-my $orig_foo_meta = Dump(One->meta);
+One->meta->get_method_list; # fill cache
-test_One();
+my $orig_meta = dump_meta One->meta;
-use Data::Dump::Streamer;
+test_One();
my $compiled = $compiler->compiled_source;
Class::Unload->unload('One');
Class::MOP::remove_metaclass_by_name('One');
-eval "no warnings; $compiled";
+io('/tmp/One.pmc')->print($compiled);
-die "Shit. failed.\n\n${compiled}\n\nError: $@" if $@;
+require '/tmp/One.pmc';
-use Data::Dumper::Concise;
+#eval "no warnings; $compiled";
+
+#die "Shit. failed.\n\n${compiled}\n\nError: $@" if $@;
my %compiled_src = map +($_ => join '', Dump(One->can($_))), qw(new DESTROY foo);
is($compiled_src{$method}, $orig_src{$method}, "${method} restored ok");
}
+my $compiled_meta = dump_meta One->meta;
+
test_One;
+#io('orig')->print($orig_meta);
+#io('comp')->print($compiled_meta);
+
+is($orig_meta, $compiled_meta, 'metaclass restored ok');
+
# write test_class method that checks method including call
# Class::Unload One
# build compiled source