artifacts: Die gracefully if artifacts don't exist

TEST=./run_tests
BUG=chromium:949566

Change-Id: I79a3ddbf8bfa9a632c902437328c88390fc64a4d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1559659
Tested-by: Evan Hernandez <evanhernandez@chromium.org>
Reviewed-by: Jason Clinton <jclinton@chromium.org>
diff --git a/api/controller/artifacts_unittest.py b/api/controller/artifacts_unittest.py
index c2d20cd..57ad67a 100644
--- a/api/controller/artifacts_unittest.py
+++ b/api/controller/artifacts_unittest.py
@@ -93,6 +93,13 @@
         mock.call('/cros', '/cros/chroot/build/target/build', '/tmp/artifacts')
     ])
 
+  def testBundleTastFilesNoLogs(self):
+    """BundleTasteFiles dies when no tast files found."""
+    self.PatchObject(commands, 'BuildTastBundleTarball',
+                     return_value=None)
+    with self.assertRaises(cros_build_lib.DieSystemExit):
+      artifacts.BundleTastFiles(self.input_proto, self.output_proto)
+
 
 class BundlePinnedGuestImagesTest(BundleTestCase):
   """Unittests for BundlePinnedGuestImages."""
@@ -110,6 +117,13 @@
     self.assertEqual(build_pinned_guest_images_tarball.call_args_list,
                      [mock.call('/cros', 'target', '/tmp/artifacts')])
 
+  def testBundlePinnedGuestImagesNoLogs(self):
+    """BundlePinnedGuestImages dies when no pinned images found."""
+    self.PatchObject(commands, 'BuildPinnedGuestImagesTarball',
+                     return_value=None)
+    with self.assertRaises(cros_build_lib.DieSystemExit):
+      artifacts.BundlePinnedGuestImages(self.input_proto, self.output_proto)
+
 
 class BundleFirmwareTest(BundleTestCase):
   """Unittests for BundleFirmware."""
@@ -125,6 +139,12 @@
     self.assertEqual(build_firmware_archive.call_args_list,
                      [mock.call('/cros', 'target', '/tmp/artifacts')])
 
+  def testBundleFirmwareNoLogs(self):
+    """BundleFirmware dies when no firmware found."""
+    self.PatchObject(commands, 'BuildFirmwareArchive', return_value=None)
+    with self.assertRaises(cros_build_lib.DieSystemExit):
+      artifacts.BundleFirmware(self.input_proto, self.output_proto)
+
 
 class BundleEbuildLogsTest(BundleTestCase):
   """Unittests for BundleEbuildLogs."""
@@ -141,6 +161,12 @@
         build_ebuild_logs_tarball.call_args_list,
         [mock.call('/cros/chroot/build', 'target', '/tmp/artifacts')])
 
+  def testBundleEbuildLogsNoLogs(self):
+    """BundleEbuildLogs dies when no logs found."""
+    self.PatchObject(commands, 'BuildEbuildLogsTarball', return_value=None)
+    with self.assertRaises(cros_build_lib.DieSystemExit):
+      artifacts.BundleEbuildLogs(self.input_proto, self.output_proto)
+
 
 class BundleTestUpdatePayloadsTest(cros_test_lib.MockTempDirTestCase):
   """Unittests for BundleTestUpdatePayloads."""