def test_get_pkg_version(self): self.patch_object(generic_utils.model, "get_units") self.patch_object(generic_utils.juju_utils, "remote_run") _pkg = "os-thingy" _version = "2:27.0.0-0ubuntu1~cloud0" _dpkg_output = ("ii {} {} all OpenStack thingy\n" .format(_pkg, _version)) self.remote_run.return_value = _dpkg_output _unit1 = mock.MagicMock() _unit1.entity_id = "os-thingy/7" _unit2 = mock.MagicMock() _unit2.entity_id = "os-thingy/12" _units = [_unit1, _unit2] self.get_units.return_value = _units # Matching self.assertEqual(generic_utils.get_pkg_version(_pkg, _pkg), _version) # Mismatched _different_dpkg_output = ("ii {} {} all OpenStack thingy\n" .format(_pkg, "DIFFERENT")) self.remote_run.side_effect = [_dpkg_output, _different_dpkg_output] with self.assertRaises(Exception): generic_utils.get_pkg_version(_pkg, _pkg)
def _skipUntilVersion_inner_2(*args, **kwargs): package_version = generic_utils.get_pkg_version(service, package) try: subprocess.check_call(['dpkg', '--compare-versions', package_version, 'ge', release], stderr=subprocess.STDOUT, universal_newlines=True) return f(*args, **kwargs) except subprocess.CalledProcessError as cp: logging.warn("Skipping test for older ({})" "service {}, requested {}".format( package_version, service, release))