Simplify test code a bit
[gitmo/MooseX-Compiler.git] / t / lib / Test / MooseX / Compiler.pm
CommitLineData
9e60f0d8 1package Test::MooseX::Compiler;
2
3use strict;
4use warnings;
5use autodie;
6
7use Exporter qw( import );
8use File::Temp qw( tempdir );
9use Module::Runtime qw( module_notional_filename );
10use Path::Class qw( dir );
11
12our @EXPORT_OK = qw(
13 save_class
14);
15
16my $Dir = dir( tempdir( CLEANUP => 1 ) );
17
18sub save_class {
19 my $class = shift;
20 my $code = shift;
21
6029ad7b 22 my $full_code = <<"EOF";
23package $class;
24
25use strict;
26use warnings;
27
28$code
29
301;
31EOF
32
9e60f0d8 33 {
34 local $@;
6029ad7b 35 eval $full_code;
9e60f0d8 36 die $@ if $@;
37 }
38
39 my $pm_file = module_notional_filename($class);
40 my $path = $Dir->file($pm_file);
41 $path->dir()->mkpath( 0, 0755 );
42
43 open my $fh, '>', $path;
6029ad7b 44 print {$fh} $full_code;
9e60f0d8 45 close $fh;
46
47 $INC{$pm_file} = $path;
48
49 return $pm_file;
50}
51
521;