def setUp(self): current_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] temp_repo_dir = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, temp_repo_dir) repo_file_name = os.path.join(temp_repo_dir, 'awesome.repo') with open(repo_file_name, 'w') as repo_file: repo_file.write(CONTENT_REPO_FILE) patcher = patch('rhsm.profile.dnf') self.addCleanup(patcher.stop) dnf_mock = patcher.start() dnf_mock.dnf = Mock() mock_db = Mock() mock_db.conf = Mock() mock_db.conf.substitutions = {'releasever': '1', 'basearch': 'x86_64'} dnf_mock.dnf.Base = Mock(return_value=mock_db) self.current_profile = self._mock_pkg_profile(current_pkgs, repo_file_name, ENABLED_MODULES) self.profile_mgr = ProfileManager() self.profile_mgr.current_profile = self.current_profile
def test_load_profile_from_file(self): dummy_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] profile = self._mock_pkg_profile(dummy_pkgs) self.assertEqual(2, len(profile.packages))
def setUp(self): current_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] self.current_profile = self._mock_pkg_profile(current_pkgs) self.profile_mgr = ProfileManager(current_profile=self.current_profile)
def test_equality_different_object_type(self): dummy_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] profile = self._mock_pkg_profile(dummy_pkgs) self.assertFalse(profile == "hello")
def test_equality_no_change(self): dummy_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] profile = self._mock_pkg_profile(dummy_pkgs) other = self._mock_pkg_profile(dummy_pkgs) self.assertTrue(profile == other)
def test_equality_packages_removed(self): dummy_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] profile = self._mock_pkg_profile(dummy_pkgs) dummy_pkgs.pop() other = self._mock_pkg_profile(dummy_pkgs) self.assertFalse(profile == other)
def test_has_changed(self): cached_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package3", version="3.0.0", release=3, arch="x86_64")] cached_profile = self._mock_pkg_profile(cached_pkgs) self.profile_mgr._cache_exists = Mock(return_value=True) self.profile_mgr._read_cache = Mock(return_value=cached_profile) self.assertTrue(self.profile_mgr.has_changed()) self.profile_mgr._read_cache.assert_called_with()
def test_equality_packages_updated(self): dummy_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] profile = self._mock_pkg_profile(dummy_pkgs) # "Upgrade" package2: dummy_pkgs[1].version = "3.1.5" other = self._mock_pkg_profile(dummy_pkgs) self.assertFalse(profile == other)
def test_package_json_missing_attributes(self): package = Package(name=None, version=None, release=None, arch=None, vendor=None) data = package.to_dict() json_str = json.dumps(data) # to json data = json.loads(json_str) # and back to an object for attr in ['name', 'version', 'release', 'arch', 'vendor']: self.assertEqual(None, data[attr])
def test_package_json_handles_non_unicode(self): package = Package(name=b'\xf6', version=b'\xf6', release=b'\xf6', arch=b'\xf6', vendor=b'\xf6') data = package.to_dict() json_str = json.dumps(data) # to json data = json.loads(json_str) # and back to an object for attr in ['name', 'version', 'release', 'arch', 'vendor']: self.assertEqual(u'\ufffd', data[attr])
def test_equality_packages_replaced(self): dummy_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64"), ] profile = self._mock_pkg_profile(dummy_pkgs) # Remove package2, add package3: dummy_pkgs.pop() dummy_pkgs.append( Package(name="package3", version="3.0.0", release=2, arch="x86_64")) other = self._mock_pkg_profile(dummy_pkgs) self.assertFalse(profile == other)
def setUp(self): current_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] temp_repo_dir = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, temp_repo_dir) repo_file_name = os.path.join(temp_repo_dir, 'awesome.repo') with open(repo_file_name, 'w') as repo_file: repo_file.write(CONTENT_REPO_FILE) self.current_profile = self._mock_pkg_profile(current_pkgs, repo_file_name, ENABLED_MODULES) self.profile_mgr = ProfileManager() self.profile_mgr.current_profile = self.current_profile
def test_has_changed_no_changes(self): cached_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] temp_repo_dir = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, temp_repo_dir) repo_file_name = os.path.join(temp_repo_dir, 'awesome.repo') with open(repo_file_name, 'w') as repo_file: repo_file.write(CONTENT_REPO_FILE) cached_profile = self._mock_pkg_profile(cached_pkgs, repo_file_name, ENABLED_MODULES) self.profile_mgr._cache_exists = Mock(return_value=True) self.profile_mgr._read_cache = Mock(return_value=cached_profile) self.assertFalse(self.profile_mgr.has_changed()) self.profile_mgr._read_cache.assert_called_with()
def test_package_json_as_unicode_type(self): # note that the data type at time of writing is bytes, so this is just defensive coding package = Package(name=u'Björk', version=u'Björk', release=u'Björk', arch=u'Björk', vendor=u'Björk') data = package.to_dict() json_str = json.dumps(data) # to json data = json.loads(json_str) # and back to an object for attr in ['name', 'version', 'release', 'arch', 'vendor']: self.assertEqual(u'Björk', data[attr])
def test_package_json_missing_vendor(self): package = Package(name="package1", version="1.0.0", release=1, arch="x86_64", vendor=None) data = package.to_dict() json_str = json.dumps(data) # to json data = json.loads(json_str) # and back to an object self.assertEqual(None, data['vendor'])
def test_package_json_handles_non_unicode(self): package = Package(name="package1", version="1.0.0", release=1, arch="x86_64", vendor=b'\xf6') data = package.to_dict() json_str = json.dumps(data) # to json data = json.loads(json_str) # and back to an object self.assertEqual(u'\ufffd', data['vendor'])
def test_package_json_vendor_as_unicode_type(self): # note that the data type at time of writing is bytes, so this is just defensive coding package = Package(name="package1", version="1.0.0", release=1, arch="x86_64", vendor=u'Björk') data = package.to_dict() json_str = json.dumps(data) # to json data = json.loads(json_str) # and back to an object self.assertEqual(u'Björk', data['vendor'])