def testArgumentValidation(self): """Test the argument validation.""" # Test errors on missing inputs. out_proto = self._OutputProto() # Both missing. in_proto = self._InputProto() with self.assertRaises(cros_build_lib.DieSystemExit): sysroot_controller.InstallToolchain(in_proto, out_proto, self.api_config) # Sysroot path missing. in_proto = self._InputProto(build_target=self.board) with self.assertRaises(cros_build_lib.DieSystemExit): sysroot_controller.InstallToolchain(in_proto, out_proto, self.api_config) # Build target name missing. in_proto = self._InputProto(sysroot_path=self.sysroot) with self.assertRaises(cros_build_lib.DieSystemExit): sysroot_controller.InstallToolchain(in_proto, out_proto, self.api_config) # Both provided, but invalid sysroot path. in_proto = self._InputProto(build_target=self.board, sysroot_path=self.invalid_sysroot) with self.assertRaises(cros_build_lib.DieSystemExit): sysroot_controller.InstallToolchain(in_proto, out_proto, self.api_config)
def testValidateOnly(self): """Sanity check that a validate only call does not execute any logic.""" patch = self.PatchObject(sysroot_service, 'InstallToolchain') in_proto = self._InputProto(build_target=self.board, sysroot_path=self.sysroot) sysroot_controller.InstallToolchain(in_proto, self._OutputProto(), self.validate_only_config) patch.assert_not_called()
def testSuccessOutputHandling(self): """Test the output is processed and recorded correctly.""" self.PatchObject(sysroot_service, 'InstallToolchain') out_proto = self._OutputProto() in_proto = self._InputProto(build_target=self.board, sysroot_path=self.sysroot) rc = sysroot_controller.InstallToolchain(in_proto, out_proto, self.api_config) self.assertFalse(rc) self.assertFalse(out_proto.failed_packages)
def testMockCall(self): """Sanity check that a mock call does not execute any logic.""" patch = self.PatchObject(sysroot_service, 'InstallToolchain') request = self._InputProto() response = self._OutputProto() rc = sysroot_controller.InstallToolchain(request, response, self.mock_call_config) patch.assert_not_called() self.assertEqual(controller.RETURN_CODE_SUCCESS, rc)
def testMockError(self): """Sanity check that a mock error does not execute any logic.""" patch = self.PatchObject(sysroot_service, 'InstallToolchain') request = self._InputProto() response = self._OutputProto() rc = sysroot_controller.InstallToolchain(request, response, self.mock_error_config) patch.assert_not_called() self.assertEqual( controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE, rc) self.assertTrue(response.failed_packages)
def testErrorOutputHandling(self): """Test the error output is processed and recorded correctly.""" out_proto = self._OutputProto() in_proto = self._InputProto(build_target=self.board, sysroot_path=self.sysroot) err_pkgs = ['cat/pkg', 'cat2/pkg2'] err_cpvs = [ portage_util.SplitCPV(pkg, strict=False) for pkg in err_pkgs ] expected = [('cat', 'pkg'), ('cat2', 'pkg2')] err = sysroot_lib.ToolchainInstallError('Error', cros_build_lib.CommandResult(), tc_info=err_cpvs) self.PatchObject(sysroot_service, 'InstallToolchain', side_effect=err) rc = sysroot_controller.InstallToolchain(in_proto, out_proto, self.api_config) self.assertEqual( controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE, rc) self.assertTrue(out_proto.failed_packages) for package in out_proto.failed_packages: cat_pkg = (package.category, package.package_name) self.assertIn(cat_pkg, expected)