Give each test its own Nix directories
[?]
Feb 22, 2021, 9:52 PM
UIA3ULNUQVJJJYYVSHCT3GMNYBB5GRHEMHBU2KIFPFG6YVTLMYKACDependencies
- [2]
ABB3BIS2Add eval test for specific git revision - [3]
NZXX6PLDRemove the Jobs table - [4]
OWRS526HCreate an ephemeral PostgreSQL database per test - [5]
FAIJDQKZ - [6]
HX4QYOYAadd first evaluations tests - [7]
L7RW467ZAdd a test for darcs inputs. - [8]
PY5GVGC7Implemented quoted strings support in hydra-build-products to allow file names with spaces + testcase - [9]
5SMQ2PLKFix tests - [10]
SBKX3YH2cleanup - [11]
7VQ4ALFYUpdate "make check" for the new queue runner - [12]
HE3GX5IPOptimize fetch-git. - [13]
3RL7VFKEAdd tests for "git describe --long". - [14]
YDW2NUIWFix "make check" - [15]
S5NPXZG3Fix indentation - [16]
WFJ3ZPRMadd tests for scm inputs - [17]
RBZRCTALhydra: fixed and re-enabled evaluation tests - [*]
G2ZB6464first test, not yet in buildprocess
Change contents
- file addition: evaluate-basic.t[19.73]
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; - replacement in tests/evaluation.t at line 5
my $pgsql = dbinit();my $dsn = $pgsql->dsn;(my $datadir, my $pgsql) = test_init(); - replacement in tests/evaluation.t at line 10
use Test::Simple tests => 76;use Test::Simple tests => 68; - edit in tests/evaluation.t at line 23
# Most basic test case, no parameters$jobset = createBaseJobset("basic", "basic.nix"); - edit in tests/evaluation.t at line 24[5.571]→[5.1619:1822](∅→∅),[5.1822]→[5.796:797](∅→∅),[5.796]→[5.796:797](∅→∅),[5.797]→[5.857:906](∅→∅),[5.906]→[3.6635:6732](∅→∅),[3.6732]→[5.103:166](∅→∅),[5.103]→[5.103:166](∅→∅),[5.166]→[3.6733:6973](∅→∅),[5.210]→[5.1270:1272](∅→∅),[5.383]→[5.1270:1272](∅→∅),[3.6973]→[5.1270:1272](∅→∅),[5.1270]→[5.1270:1272](∅→∅),[5.1272]→[5.838:839](∅→∅),[5.838]→[5.838:839](∅→∅)
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");} - edit in tests/lib/Setup.pm at line 6
use File::Temp;use File::Path qw(make_path); - replacement in tests/lib/Setup.pm at line 11
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"; - replacement in tests/lib/Setup.pm at line 27
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"); - replacement in tests/lib/Setup.pm at line 36
return $pgsql;return ($dir, $pgsql);