metaclass dumping
[gitmo/MooseX-Antlers.git] / t / one.t
diff --git a/t/one.t b/t/one.t
index 5694a07..b789f65 100644 (file)
--- a/t/one.t
+++ b/t/one.t
@@ -5,9 +5,18 @@ use lib 't/lib';
 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
 }
@@ -35,11 +44,11 @@ sub test_One {
 
 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;
 
@@ -48,11 +57,13 @@ 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);
 
@@ -60,8 +71,15 @@ foreach my $method (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