]>
iEval git - gruntmaster-daemon.git/blob - t/01-jobs.t
6 use Gruntmaster
:: Daemon
;
9 use File
:: Basename qw
/fileparse/ ;
10 use File
:: Slurp qw
/read_file/ ;
11 use File
:: Temp qw
/tempdir/ ;
12 use File
:: Which qw
/which/ ;
13 use Hash
:: Merge qw
/merge/ ;
14 use List
:: Util qw
/sum/ ;
17 use YAML
:: Tiny qw
/LoadFile/ ;
19 ##################################################
21 use constant COMPILER
=> {
43 my %needs_fork = map { $_ => 1 } qw
/GOLANG GOLFSCRIPT GCCGO JAVA JULIA RUBY/ ;
45 my $loglevel = $ENV { TEST_LOG_LEVEL
} // ( $ENV { TEST_VERBOSE
} ?
'TRACE' : 'OFF' );
46 my $log_conf = <<CONF;
47 log4perl.category.Gruntmaster.Daemon = $loglevel , stderr
49 log4perl.appender.stderr = Log::Log4perl::Appender::Screen
50 log4perl.appender.stderr.layout = Log::Log4perl::Layout::PatternLayout
51 log4perl.appender.stderr.layout.ConversionPattern = [\ %d ] [\ %F {1}:\ %M {1}:\ %L ] [\ %p ] \ %m \ %n
53 Log
:: Log4perl
-> init ( \
$log_conf );
55 $ENV { PATH
} = getcwd
. ':' . $ENV { PATH
};
60 if ( defined $meta ->{ results
}) {
61 delete $meta ->{ results
}[ $_ ]{ time } for keys @
{ $meta ->{ results
}};
63 my $desc = $meta ->{ name
} . ': ' . $meta ->{ test_name
};
64 is
$meta ->{ result
}, $meta ->{ expected_result
}, "Result is correct ( $desc )" ;
65 is
$meta ->{ result_text
}, $meta ->{ expected_result_text
}, "Result text is correct ( $desc )" ;
66 is_deeply
$meta ->{ results
}, $meta ->{ expected_results
}, "Results are correct ( $desc )" ;
69 my @problems = exists $ENV { TEST_PROBLEMS
} ?
map { "t/problems/ $_ " } split ' ' , $ENV { TEST_PROBLEMS
} : < t
/problems/ *>;
70 @problems = grep { $_ !~ /hello/ } @problems unless $ENV { RELEASE_TESTING
} || $ENV { TEST_PROBLEMS
};
72 plan tests
=> 3 * sum
map { my @temp = < $_ /tests/ *>; scalar @temp } @problems ;
73 note
"Problems to be tested: " . join ', ' , @problems ;
75 my $tempdir = tempdir
"gruntmasterd-testingXXXX" , TMPDIR
=> 1 , CLEANUP
=> 1 ;
80 for my $problem ( @problems ) {
81 my $pbmeta = LoadFile
" $problem /meta.yml" ;
82 for ( 1 .. $pbmeta ->{ testcnt
}) {
83 $pbmeta ->{ infile
}[ $_ - 1 ] = read_file
" $problem / $_ .in" if $pbmeta ->{ generator
} eq 'File' ;
84 $pbmeta ->{ okfile
}[ $_ - 1 ] = read_file
" $problem / $_ .ok" if $pbmeta ->{ runner
} && $pbmeta ->{ runner
} eq 'File' ;
86 if ( exists $pbmeta ->{ files
}) {
87 $_ ->{ content
} = read_file
" $problem / $_ ->{name}" for values %{ $pbmeta ->{ files
}}
91 note
"Now testing problem $pbmeta ->{name} ( $pbmeta ->{description})" ;
93 for my $source (< $problem / tests
/*>) {
95 my $meta = LoadFile
" $source /meta.yml" ;
96 if ( $meta ->{ files
}{ prog
}) {
97 my $format = $meta ->{ files
}{ prog
}{ format
};
98 my $compiler = COMPILER
->{ $format };
99 skip
" $compiler not found in path" , 3 unless $ENV { GRUNTMASTER_VM
} || which
$compiler ;
100 skip
" $format requires multiple processes. Set GRUNTMASTER_KILL_USER and GRUNTMASTER_SUDO to allow multiple processes." , 3 if ! $ENV { GRUNTMASTER_KILL_USER
} && $needs_fork { $format };
101 $meta ->{ files
}{ prog
}{ content
} = read_file
" $source / $meta ->{files}{prog}{name}" ;
103 $meta = merge
$meta , $pbmeta ;
104 local $TODO = $meta ->{ todo
} if exists $meta ->{ todo
};
105 note
"Running $meta ->{test_name} ( $meta ->{test_description})..." ;
106 my $savedcwd = getcwd
;
108 Gruntmaster
:: Daemon
:: process
$meta ;
This page took 0.057479 seconds and 4 git commands to generate.