use feature 'unicode_strings'; use strict; use warnings; use Setup; use Test2::V0; use File::Copy qw(cp); my $ctx = test_context( nix_config => qq| experimental-features = nix-command flakes |, hydra_config => q| evaluator_pure_eval = false | ); sub checkFlake { my ($flake) = @_; cp($ctx->jobsdir . "/basic.nix", $ctx->jobsdir . "/" . $flake); cp($ctx->jobsdir . "/config.nix", $ctx->jobsdir . "/" . $flake); cp($ctx->jobsdir . "/empty-dir-builder.sh", $ctx->jobsdir . "/" . $flake); cp($ctx->jobsdir . "/fail.sh", $ctx->jobsdir . "/" . $flake); cp($ctx->jobsdir . "/succeed-with-failed.sh", $ctx->jobsdir . "/" . $flake); chmod 0755, $ctx->jobsdir . "/" . $flake . "/empty-dir-builder.sh"; chmod 0755, $ctx->jobsdir . "/" . $flake . "/fail.sh"; chmod 0755, $ctx->jobsdir . "/" . $flake . "/succeed-with-failed.sh"; my $builds = $ctx->makeAndEvaluateJobset( flake => 'path:' . $ctx->jobsdir . "/" . $flake, build => 1 ); subtest "Build: succeed_with_failed" => sub { my $build = $builds->{"succeed_with_failed"}; is($build->finished, 1, "Build should be finished."); is($build->buildstatus, 6, "succeeeded-but-failed should have buildstatus 6."); }; subtest "Build: empty_dir" => sub { my $build = $builds->{"empty_dir"}; is($build->finished, 1, "Build should be finished."); is($build->buildstatus, 0, "Should have succeeded."); }; subtest "Build: fails" => sub { my $build = $builds->{"fails"}; is($build->finished, 1, "Build should be finished."); is($build->buildstatus, 1, "Should have failed."); }; } subtest "Flake using `checks`" => sub { checkFlake 'flake-checks' }; subtest "Flake using `hydraJobs`" => sub { checkFlake 'flake-hydraJobs' }; done_testing;