build-api: Handle missing firmware version

If `_get_firmware_version_cmd_result` returns a None result (like in
cases of a betty image), make sure we don't attempt to do things
(like split or otherwise assume presence of) to that version string.

BUG=b:213879649
TEST=run_tests

Change-Id: Icc9c831b902f8a2afbe34674bdc4340e1d6ebd20
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3383105
Reviewed-by: George Engelbrecht <engeg@google.com>
Reviewed-by: Greg Edelston <gredelston@google.com>
Commit-Queue: Benjamin Shai <bshai@google.com>
Tested-by: Benjamin Shai <bshai@google.com>
diff --git a/service/packages_unittest.py b/service/packages_unittest.py
index 2fd732e..c74685b 100644
--- a/service/packages_unittest.py
+++ b/service/packages_unittest.py
@@ -878,6 +878,17 @@
                                   'reef_v1.1.5900-ab1ee51',
                                   'reef_v1.1.5909-bd1f0c9'))
 
+  def test_get_firmware_versions_error(self):
+    """Tests get_firmware_versions with no output."""
+    # Throw an exception when running the command.
+    self.PatchObject(
+        cros_build_lib,
+        'run',
+        side_effect=cros_build_lib.RunCommandError('error'))
+    build_target = build_target_lib.BuildTarget(self.board)
+    result = packages.get_all_firmware_versions(build_target)
+    self.assertEqual(result, {})
+
 
 class GetFirmwareVersionsTest(cros_test_lib.RunCommandTempDirTestCase):
   """Tests for get_firmware_versions."""