# Copyright 2018 - The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Tests for host_setup_runner.""" import subprocess import unittest from acloud import errors from acloud.internal.lib import driver_test_lib from acloud.setup import setup_common class SetupCommonTest(driver_test_lib.BaseDriverTest): """Test HostPkgTaskRunner.""" PKG_INFO_INSTALLED = """fake_pkg: Installed: 0.7 Candidate: 0.7 Version table: """ PKG_INFO_NONE_INSTALL = """fake_pkg: Installed: (none) Candidate: 0.7 Version table: """ PKG_INFO_OLD_VERSION = """fake_pkg: Installed: 0.2 Candidate: 0.7 Version table: """ # pylint: disable=invalid-name def testPackageNotInstalled(self): """"Test PackageInstalled return False when Installed status is (None). """ self.Patch( setup_common, "CheckCmdOutput", return_value=self.PKG_INFO_NONE_INSTALL) self.assertFalse( setup_common.PackageInstalled("fake_package")) def testUnableToLocatePackage(self): """"Test PackageInstalled return False if unable to locate package.""" self.Patch( setup_common, "CheckCmdOutput", side_effect=subprocess.CalledProcessError( None, "This error means unable to locate package on repository.")) with self.assertRaises(errors.UnableToLocatePkgOnRepositoryError): setup_common.PackageInstalled("fake_package") # pylint: disable=invalid-name def testPackageInstalledFalseForOldVersion(self): """Test PackageInstalled should return False when pkg is out-of-date.""" self.Patch( setup_common, "CheckCmdOutput", return_value=self.PKG_INFO_OLD_VERSION) self.assertFalse(setup_common.PackageInstalled("fake_package", compare_version=True)) def testPackageInstalled(self): """Test PackageInstalled should return True when pkg is installed.""" self.Patch( setup_common, "CheckCmdOutput", return_value=self.PKG_INFO_INSTALLED) self.assertTrue(setup_common.PackageInstalled("fake_package")) if __name__ == "__main__": unittest.main()