예제 #1
0
파일: test_cache.py 프로젝트: Lorquas/rhsm
    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
예제 #2
0
 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])
예제 #3
0
 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])
예제 #4
0
 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")
예제 #5
0
 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])
예제 #6
0
 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))
예제 #7
0
 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)
예제 #8
0
    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)
예제 #9
0
 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'])
예제 #10
0
 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'])
예제 #11
0
 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'])
예제 #12
0
    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()
예제 #13
0
    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)
예제 #14
0
    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)
예제 #15
0
    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
예제 #17
0
    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()