sysroot.py & image.py: Add no specific packages failed condition.

Handling for when there was a failure but nothing to report.

BUG=chromium:983279
TEST=run_tests

Change-Id: I2b82492ae2b2f534f587d7f45df86fbc2ddd4ce5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1697376
Commit-Queue: Alex Klein <saklein@chromium.org>
Commit-Queue: Evan Hernandez <evanhernandez@chromium.org>
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Evan Hernandez <evanhernandez@chromium.org>
Auto-Submit: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/image_unittest.py b/api/controller/image_unittest.py
index a0f0df9..a52ebb7 100644
--- a/api/controller/image_unittest.py
+++ b/api/controller/image_unittest.py
@@ -106,9 +106,24 @@
     for package in output_proto.failed_packages:
       self.assertIn((package.category, package.package_name), expected_packages)
 
+  def testNoPackagesFailureHandling(self):
+    """Test failed packages are populated correctly."""
+    result = image_service.BuildResult(1, [])
+    self.PatchObject(image_service, 'Build', return_value=result)
 
-class ImageTest(cros_test_lib.MockTempDirTestCase):
-  """Image service tests."""
+    input_proto = image_pb2.CreateImageRequest()
+    input_proto.build_target.name = 'board'
+    output_proto = image_pb2.CreateImageResult()
+
+    rc = image_controller.Create(input_proto, output_proto)
+    self.assertTrue(rc)
+    self.assertNotEqual(controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE,
+                        rc)
+    self.assertFalse(output_proto.failed_packages)
+
+
+class ImageTestTest(cros_test_lib.MockTempDirTestCase):
+  """Image test tests."""
 
   def setUp(self):
     self.image_path = os.path.join(self.tempdir, 'image.bin')