Add a test validating direct and indirect constituents
This commit is contained in:
parent
dfb3eccfaa
commit
5d169e3a2e
40
t/jobs/constituents.nix
Normal file
40
t/jobs/constituents.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
with import ./config.nix;
|
||||
rec {
|
||||
constituentA = mkDerivation {
|
||||
name = "empty-dir-A";
|
||||
builder = ./empty-dir-builder.sh;
|
||||
};
|
||||
|
||||
constituentB = mkDerivation {
|
||||
name = "empty-dir-B";
|
||||
builder = ./empty-dir-builder.sh;
|
||||
};
|
||||
|
||||
direct_aggregate = mkDerivation {
|
||||
name = "direct_aggregate";
|
||||
_hydraAggregate = true;
|
||||
constituents = [
|
||||
constituentA
|
||||
];
|
||||
builder = ./empty-dir-builder.sh;
|
||||
};
|
||||
|
||||
indirect_aggregate = mkDerivation {
|
||||
name = "indirect_aggregate";
|
||||
_hydraAggregate = true;
|
||||
constituents = [
|
||||
"constituentA"
|
||||
];
|
||||
builder = ./empty-dir-builder.sh;
|
||||
};
|
||||
|
||||
mixed_aggregate = mkDerivation {
|
||||
name = "mixed_aggregate";
|
||||
_hydraAggregate = true;
|
||||
constituents = [
|
||||
"constituentA"
|
||||
constituentB
|
||||
];
|
||||
builder = ./empty-dir-builder.sh;
|
||||
};
|
||||
}
|
35
t/queue-runner/direct-indirect-constituents.t
Normal file
35
t/queue-runner/direct-indirect-constituents.t
Normal file
|
@ -0,0 +1,35 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use Setup;
|
||||
use Test2::V0;
|
||||
|
||||
my $ctx = test_context();
|
||||
|
||||
my $builds = $ctx->makeAndEvaluateJobset(
|
||||
expression => 'constituents.nix',
|
||||
);
|
||||
|
||||
my $constituentBuildA = $builds->{"constituentA"};
|
||||
my $constituentBuildB = $builds->{"constituentB"};
|
||||
|
||||
my $eval = $constituentBuildA->jobsetevals->first();
|
||||
is($eval->evaluationerror->errormsg, "");
|
||||
|
||||
subtest "Verifying the direct aggregate" => sub {
|
||||
my $aggBuild = $builds->{"direct_aggregate"};
|
||||
is($aggBuild->constituents->first()->id, $constituentBuildA->id, "The ID of the constituent is correct");
|
||||
};
|
||||
|
||||
subtest "Verifying the indirect aggregate" => sub {
|
||||
my $indirectBuild = $builds->{"indirect_aggregate"};
|
||||
is($indirectBuild->constituents->first()->id, $constituentBuildA->id, "The ID of the constituent is correct");
|
||||
};
|
||||
|
||||
subtest "Verifying a mix of direct and indirect aggregate references" => sub {
|
||||
my $mixedBuild = $builds->{"mixed_aggregate"};
|
||||
my ($constituentA, $constituentB) = $mixedBuild->constituents()->search({}, {order_by => { -asc => "job"} });
|
||||
is($constituentA->id, $constituentBuildA->id, "The ID of the constituent is correct");
|
||||
is($constituentB->id, $constituentBuildB->id, "The ID of the constituent is correct");
|
||||
};
|
||||
|
||||
done_testing;
|
Loading…
Reference in a new issue