From 371826f93113a79fffff757c8bfaab28bc63f6c7 Mon Sep 17 00:00:00 2001
From: Graham Christensen <graham@grahamc.com>
Date: Tue, 23 Feb 2021 14:44:23 -0500
Subject: [PATCH] Tests: build-products: use `is` for good errors on failures

---
 tests/build-products.t | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/tests/build-products.t b/tests/build-products.t
index bda1d90d..3431324c 100644
--- a/tests/build-products.t
+++ b/tests/build-products.t
@@ -17,22 +17,27 @@ hydra_setup($db);
 
 my $jobset = createBaseJobset("build-products", "build-products.nix");
 
-ok(evalSucceeds($jobset),                  "Evaluating jobs/build-products.nix should exit with return code 0");
-ok(nrQueuedBuildsForJobset($jobset) == 2 , "Evaluating jobs/build-products.nix should result in 2 builds");
+ok(evalSucceeds($jobset),               "Evaluating jobs/build-products.nix should exit with return code 0");
+is(nrQueuedBuildsForJobset($jobset), 2, "Evaluating jobs/build-products.nix should result in 2 builds");
 
 for my $build (queuedBuildsForJobset($jobset)) {
-    ok(runBuild($build), "Build '".$build->job."' from jobs/build-products.nix should exit with code 0");
-    my $newbuild = $db->resultset('Builds')->find($build->id);
-    ok($newbuild->finished == 1 && $newbuild->buildstatus == 0, "Build '".$build->job."' from jobs/build-products.nix should have buildstatus 0");
+    subtest "For the build job '" . $build->job . "'" => sub {
+        ok(runBuild($build), "Build should exit with code 0");
+        my $newbuild = $db->resultset('Builds')->find($build->id);
 
-    my $buildproducts = $db->resultset('BuildProducts')->search({ build => $build->id });
-    my $buildproduct = $buildproducts->next;
+        is($newbuild->finished, 1, "Build should have finished");
+        is($newbuild->buildstatus, 0, "Build should have buildstatus 0");
+
+        my $buildproducts = $db->resultset('BuildProducts')->search({ build => $build->id });
+        my $buildproduct = $buildproducts->next;
+
+        if($build->job eq "simple") {
+            is($buildproduct->name, "text.txt", "We should have \"text.txt\"");
+        } elsif ($build->job eq "with_spaces") {
+            is($buildproduct->name, "some text.txt", "We should have: \"some text.txt\"");
+        }
+    };
 
-    if($build->job eq "simple") {
-        ok($buildproduct->name eq "text.txt", "We should have text.txt, but found: ".$buildproduct->name."\n");
-    } elsif ($build->job eq "with_spaces") {
-        ok($buildproduct->name eq "some text.txt", "We should have: \"some text.txt\", but found: ".$buildproduct->name."\n");
-    }
 }
 
 done_testing;