Work in progress on compiler. It's blowing up right now.
[gitmo/MooseX-Compiler.git] / t / lib / Test / MooseX / Compiler.pm
index 665a512..c8ea849 100644 (file)
@@ -8,14 +8,17 @@ use Exporter qw( import );
 use File::Temp qw( tempdir );
 use Module::Runtime qw( module_notional_filename );
 use Path::Class qw( dir );
+use Test::More;
 
 our @EXPORT_OK = qw(
+    code_compiles_ok
     save_class
+    save_fragment
 );
 
 my $Dir = dir( tempdir( CLEANUP => 1 ) );
 
-sub save_class {
+sub save_fragment {
     my $class = shift;
     my $code  = shift;
 
@@ -30,9 +33,16 @@ $code
 1;
 EOF
 
+    save_class($class, $full_code);
+}
+
+sub save_class {
+    my $class = shift;
+    my $code  = shift;
+
     {
         local $@;
-        eval $full_code;
+        eval $code;
         die $@ if $@;
     }
 
@@ -41,7 +51,7 @@ EOF
     $path->dir()->mkpath( 0, 0755 );
 
     open my $fh, '>', $path;
-    print {$fh} $full_code;
+    print {$fh} $code;
     close $fh;
 
     $INC{$pm_file} = $path;
@@ -49,4 +59,20 @@ EOF
     return $pm_file;
 }
 
+sub code_compiles_ok {
+    my $code = shift;
+
+    local $Test::Builder::Level = $Test::Builder::Level + 1;
+
+    my $e;
+    {
+        local $@;
+        local $SIG{__DIE__};
+        eval $code;
+        $e = $@;
+    }
+
+    is( $e, q{}, 'code compiled ok' );
+}
+
 1;