X-Git-Url: http://git.ieval.ro/?p=gruntmaster-daemon.git;a=blobdiff_plain;f=t%2F01-jobs.t;h=552e36f8cd238cd9d2a0791cb8db2bea67fe5590;hp=aa715e14fd8028a4e81de5c5a24df7a5d961562f;hb=cd0623f030026cc4a5c2c03d4464bb2d3cb75ca8;hpb=64871a33709affb7465dcc85ca1ded3c47406996 diff --git a/t/01-jobs.t b/t/01-jobs.t index aa715e1..552e36f 100644 --- a/t/01-jobs.t +++ b/t/01-jobs.t @@ -5,7 +5,7 @@ use warnings; use Gruntmaster::Daemon; -use Cwd qw/cwd/; +use Cwd qw/getcwd/; use File::Basename qw/fileparse/; use File::Slurp qw/read_file/; use File::Temp qw/tempdir/; @@ -28,7 +28,9 @@ use constant COMPILER => { GCCGO gccgo HASKELL ghc PERL perl - PYTHON python/}; + PYTHON python + RUBY ruby + SBCL sbcl/}; my $loglevel = $ENV{TEST_LOG_LEVEL} // ($ENV{TEST_VERBOSE} ? 'TRACE' : 'OFF'); my $log_conf = <init(\$log_conf); -$ENV{PATH} = cwd . ':' . $ENV{PATH}; +$ENV{PATH} = getcwd . ':' . $ENV{PATH}; umask 0022; sub check_job{ @@ -48,9 +50,10 @@ sub check_job{ if (defined $meta->{results}) { delete $meta->{results}[$_]{time} for keys @{$meta->{results}}; } - is $meta->{result}, $meta->{expected_result}, "Result is correct"; - is $meta->{result_text}, $meta->{expected_result_text}, "Result text is correct"; - is_deeply $meta->{results}, $meta->{expected_results}, "Results are correct"; + my $desc = $meta->{name} . ': ' . $meta->{test_name}; + is $meta->{result}, $meta->{expected_result}, "Result is correct ($desc)"; + is $meta->{result_text}, $meta->{expected_result_text}, "Result text is correct ($desc)"; + is_deeply $meta->{results}, $meta->{expected_results}, "Results are correct ($desc)"; } my @problems = exists $ENV{TEST_PROBLEMS} ? map {"t/problems/$_"} split ' ', $ENV{TEST_PROBLEMS} : ; @@ -59,7 +62,7 @@ my @problems = exists $ENV{TEST_PROBLEMS} ? map {"t/problems/$_"} split ' ', $EN plan tests => 3 * sum map { my @temp = <$_/tests/*>; scalar @temp } @problems; note "Problems to be tested: " . join ', ', @problems; -my $tempdir = tempdir "gruntmaster-daemon-testingXXXX", TMPDIR => 1, CLEANUP => 1; +my $tempdir = tempdir "gruntmasterd-testingXXXX", TMPDIR => 1, CLEANUP => 1; chmod 0777, $tempdir; my $job = 0; @@ -68,26 +71,29 @@ for my $problem (@problems) { my $pbmeta = LoadFile "$problem/meta.yml"; for (1 .. $pbmeta->{testcnt}) { $pbmeta->{infile}[$_ - 1] = read_file "$problem/$_.in" if $pbmeta->{generator} eq 'File'; - $pbmeta->{okfile}[$_ - 1] = read_file "$problem/$_.ok" if $pbmeta->{runner} eq 'File'; + $pbmeta->{okfile}[$_ - 1] = read_file "$problem/$_.ok" if $pbmeta->{runner} && $pbmeta->{runner} eq 'File'; } if (exists $pbmeta->{files}) { $_->{content} = read_file "$problem/$_->{name}" for values %{$pbmeta->{files}} } TODO: { - local $TODO = $pbmeta->{todo} if exists $pbmeta->{todo}; note "Now testing problem $pbmeta->{name} ($pbmeta->{description})"; for my $source (<$problem/tests/*>) { SKIP: { my $meta = LoadFile "$source/meta.yml"; - my $compiler = COMPILER->{$meta->{files}{prog}{format}}; - skip "$compiler not found in path", 3 unless $ENV{GRUNTMASTER_VM} || which $compiler; - local $TODO = $meta->{todo} if exists $meta->{todo}; - $meta->{files}{prog}{content} = read_file "$source/$meta->{files}{prog}{name}"; + if ($meta->{files}{prog}) { + my $format = $meta->{files}{prog}{format}; + my $compiler = COMPILER->{$format}; + skip "$compiler not found in path", 3 unless $ENV{GRUNTMASTER_VM} || which $compiler; + skip "$format requires multiple processes. Set GRUNTMASTER_KILL_USER and GRUNTMASTER_SUDO to allow multiple processes.", 3 if !$ENV{GRUNTMASTER_KILL_USER} && $format eq 'JAVA' || $format eq 'GOLANG' || $format eq 'GCCGO' || $format eq 'RUBY'; + $meta->{files}{prog}{content} = read_file "$source/$meta->{files}{prog}{name}"; + } $meta = merge $meta, $pbmeta; + local $TODO = $meta->{todo} if exists $meta->{todo}; note "Running $meta->{test_name} ($meta->{test_description})..."; - my $savedcwd = cwd; + my $savedcwd = getcwd; chdir $tempdir; Gruntmaster::Daemon::process $meta; chdir $savedcwd;