Build API: Standardize return codes.

BUG=chromium:963605
TEST=run_tests

Change-Id: If05654fe56e24425da1b89b8d516cc7ba6bebd3f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1615507
Tested-by: Alex Klein <saklein@chromium.org>
Tested-by: David Burger <dburger@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Reviewed-by: David Burger <dburger@chromium.org>
Reviewed-by: Evan Hernandez <evanhernandez@chromium.org>
diff --git a/api/controller/test.py b/api/controller/test.py
index f284617..50aa51f 100644
--- a/api/controller/test.py
+++ b/api/controller/test.py
@@ -12,6 +12,7 @@
 
 import os
 
+from chromite.api import controller
 from chromite.api.controller import controller_util
 from chromite.api.gen.chromite.api import test_pb2
 from chromite.api.gen.chromiumos import common_pb2
@@ -42,7 +43,10 @@
   if not sysroot.Exists():
     cros_build_lib.Die('The provided sysroot does not exist.')
 
-  return 0 if test.DebugInfoTest(sysroot_path) else 1
+  if test.DebugInfoTest(sysroot_path):
+    return controller.RETURN_CODE_SUCCESS
+  else:
+    return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY
 
 
 def BuildTargetUnitTest(input_proto, output_proto):
@@ -100,15 +104,22 @@
         package_info = output_proto.failed_packages.add()
         controller_util.CPVToPackageInfo(cpv, package_info)
 
-      return 1
+      if e.failed_packages:
+        return controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE
+      else:
+        return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY
     except failures_lib.BuildScriptFailure:
       # Check our status file for failed packages in case the calling code's
       # file didn't get set.
-      for cpv in portage_util.ParseParallelEmergeStatusFile(full_sf_path):
+      failed_packages = portage_util.ParseParallelEmergeStatusFile(full_sf_path)
+      for cpv in failed_packages:
         package_info = output_proto.failed_packages.add()
         controller_util.CPVToPackageInfo(cpv, package_info)
 
-      return 1
+      if failed_packages:
+        return controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE
+      else:
+        return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY
 
     tarball = _BuildUnittestTarball(chroot, board, result_path)
     if tarball:
@@ -133,7 +144,10 @@
   """Run the chromite unit tests."""
   cmd = [os.path.join(constants.CHROMITE_DIR, 'scripts', 'run_tests')]
   result = cros_build_lib.RunCommand(cmd, error_code_ok=True)
-  return result.returncode
+  if result.returncode == 0:
+    return controller.RETURN_CODE_SUCCESS
+  else:
+    return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY
 
 
 def VmTest(input_proto, _output_proto):
@@ -177,4 +191,4 @@
 
   with osutils.TempDir(prefix='vm-test-results.') as results_dir:
     cmd.extend(['--results-dir', results_dir])
-    return cros_build_lib.RunCommand(cmd, kill_timeout=10 * 60).returncode
+    cros_build_lib.RunCommand(cmd, kill_timeout=10 * 60)