Otherwise we risk tripping over confusing statuses where a build is "done" and "Cached", but we were expecting to run it.
UIA3ULNUQVJJJYYVSHCT3GMNYBB5GRHEMHBU2KIFPFG6YVTLMYKAC ABB3BIS2X3MOXUJD5CUEODSJ3QCRZ4YDSNME2AHNCPG5OJ2F2I5QC NZXX6PLDWEDQHXFF5JCZWGB22VA3WSDYLX65K6BQ5GNWPOE43N7QC OWRS526HCBSKWK5KFWO34YSZRNRXWBBG74KLW7BZSRIIZUNSELBQC G2ZB6464XGPBIMSZIPSB24EIXSCCGV4XWC3IWPS2CXYPDSUZSU5QC HX4QYOYAKKFKK4KF6SZ6FQCM5ZF7ZFDTQUR4GS5WPPTYZASYZZUAC WFJ3ZPRMZ52NFPPGRJTVNLYLFFN2DYP3JHNTPVRQAEULEF7VCGGAC SBKX3YH2EOCYY2IDACGOTXHJZSYSRHD5EC7FB6WGPKHLFYOF6SAAC FAIJDQKZH6SUUNCKW5RIOZ37YRAO5ACS6FX76MHRNN53LDBWO6ZQC S5NPXZG34PZZ5FIIAQ2IO72G6PAQC4JZ2WS2CVKTO623BNQKGMHAC YDW2NUIW4XY4JQLAS53A7XJMULRXRSGHXVI3RZ34EFWTVEM3BDYQC use feature 'unicode_strings';use strict;use Cwd;use Setup;(my $datadir, my $pgsql) = test_init();require Hydra::Schema;require Hydra::Model::DB;use Test2::V0;my $db = Hydra::Model::DB->new;hydra_setup($db);my $project = $db->resultset('Projects')->create({name => "tests", displayname => "", owner => "root"});# Most basic test case, no parametersmy $jobset = createBaseJobset("basic", "basic.nix");ok(evalSucceeds($jobset), "Evaluating jobs/basic.nix should exit with return code 0");is(nrQueuedBuildsForJobset($jobset), 3, "Evaluating jobs/basic.nix should result in 3 builds");for my $build (queuedBuildsForJobset($jobset)) {ok(runBuild($build), "Build '".$build->job."' from jobs/basic.nix should exit with code 0");my $newbuild = $db->resultset('Builds')->find($build->id);is($newbuild->finished, 1, "Build '".$build->job."' from jobs/basic.nix should be finished.");my $expected = $build->job eq "fails" ? 1 : $build->job =~ /with_failed/ ? 6 : 0;is($newbuild->buildstatus, $expected, "Build '".$build->job."' from jobs/basic.nix should have buildstatus $expected.");}done_testing;
ok(evalSucceeds($jobset), "Evaluating jobs/basic.nix should exit with return code 0");ok(nrQueuedBuildsForJobset($jobset) == 3 , "Evaluating jobs/basic.nix should result in 3 builds");for my $build (queuedBuildsForJobset($jobset)) {ok(runBuild($build), "Build '".$build->job."' from jobs/basic.nix should exit with code 0");my $newbuild = $db->resultset('Builds')->find($build->id);my $expected = $build->job eq "fails" ? 1 : $build->job =~ /with_failed/ ? 6 : 0;ok($newbuild->finished == 1 && $newbuild->buildstatus == $expected, "Build '".$build->job."' from jobs/basic.nix should have buildstatus $expected");}
our @EXPORT = qw(dbinit hydra_setup nrBuildsForJobset queuedBuildsForJobset nrQueuedBuildsForJobset createBaseJobset createJobsetWithOneInput evalSucceeds runBuild updateRepository);
our @EXPORT = qw(test_init hydra_setup nrBuildsForJobset queuedBuildsForJobset nrQueuedBuildsForJobset createBaseJobset createJobsetWithOneInput evalSucceeds runBuild updateRepository);sub test_init() {my $dir = File::Temp->newdir();$ENV{'HYDRA_DATA'} = "$dir/hydra-data";mkdir $ENV{'HYDRA_DATA'};$ENV{'NIX_CONF_DIR'} = "$dir/nix/etc/nix";make_path($ENV{'NIX_CONF_DIR'});my $nixconf = "$ENV{'NIX_CONF_DIR'}/nix.conf";open(my $fh, '>', $nixconf) or die "Could not open file '$nixconf' $!";print $fh "sandbox = false\n";close $fh;$ENV{'NIX_STATE_DIR'} = "$dir/nix/var/nix";
sub dbinit() {my $pgsql = Test::PostgreSQL->new();
$ENV{'NIX_MANIFESTS_DIR'} = "$dir/nix/var/nix/manifests";$ENV{'NIX_STORE_DIR'} = "$dir/nix/store";$ENV{'NIX_LOG_DIR'} = "$dir/nix/var/log/nix";my $pgsql = Test::PostgreSQL->new(extra_initdb_args => "--locale C.UTF-8");