예제 #1
0
    def test_softlink_with_broken_entry(self):
        self.maxDiff = None

        # Given
        path = VTK_EGG_DEFERRED_SOFTLINK
        expected_files = [
            os.path.join('EGG-INFO', 'PKG-INFO'),
            os.path.join('EGG-INFO', 'inst', 'targets.dat'),
            os.path.join('EGG-INFO', 'inst', 'files_to_install.txt'),
            os.path.join('EGG-INFO', 'usr', 'lib', 'vtk-5.10', 'libvtkViews.so.5.10.1'),
            os.path.join('EGG-INFO', 'usr', 'lib', 'vtk-5.10', 'libvtkViews.so.5.10'),
            os.path.join('EGG-INFO', 'usr', 'lib', 'vtk-5.10', 'libvtkViews.so'),
            os.path.join('EGG-INFO', 'spec', 'lib-provide'),
            os.path.join('EGG-INFO', 'spec', 'depend'),
            os.path.join('EGG-INFO', 'spec', 'lib-depend'),
            os.path.join('EGG-INFO', 'spec', 'summary'),
        ]

        with mkdtemp() as d:
            existing_link = os.path.join(d, 'EGG-INFO/usr/lib/vtk-5.10/libvtkViews.so')
            create_broken_symlink(existing_link)

            # When
            with ZipFile(path) as zp:
                zp.extractall(d)
            files = list_files(d)

            # Then
            assertCountEqual(self, files, expected_files)
            path = os.path.join(d, "EGG-INFO/usr/lib/vtk-5.10/libvtkViews.so")
            self.assertTrue(os.path.islink(path))
예제 #2
0
    def test_whats_new_no_new_epd(self):
        # Given
        r_output = textwrap.dedent("""\
            Name                 installed            available
            ============================================================
            scipy                0.12.0-1             0.13.0-1
            numpy                1.7.1-1              1.7.1-2
            """)
        installed_entries = [
            dummy_installed_package_factory("numpy", "1.7.1", 1),
            dummy_installed_package_factory("scipy", "0.12.0", 1)
        ]
        remote_entries = [
            dummy_repository_package_factory("numpy", "1.7.1", 2),
            dummy_repository_package_factory("scipy", "0.13.0", 1)
        ]

        remote, installed = create_repositories(remote_entries,
                                                installed_entries)

        # When
        with mock_print() as m:
            whats_new(remote, installed)

        # Then

        # FIXME: we splitlines and compared wo caring about order, as
        # the actual line order depends on dict ordering from
        # EggCollection.query_installed.
        assertCountEqual(self, m.value.splitlines(), r_output.splitlines())
예제 #3
0
    def test_endist_metadata_simple(self):
        # Given
        source = os.path.join(self.prefix, os.path.basename(NOSE_1_2_1))
        shutil.copy(NOSE_1_2_1, source)

        target = os.path.join(self.prefix, "babar-1.2.1-2.egg")
        endist = os.path.join(self.prefix, "endist.dat")
        with open(endist, "w") as fp:
            data = textwrap.dedent("""\
            packages = ["foo"]

            name = "babar"
            """)
            fp.write(data)

        # When
        with chdir(self.prefix):
            repack(source, 2, "rh5-64")

        # Then
        self.assertTrue(os.path.exists(target))
        with ZipFile(target) as zp:
            info = info_from_z(zp)
        assertCountEqual(self, info["packages"], ["foo"])
        assertCountEqual(self, info["name"], "babar")
예제 #4
0
    def test_softlink_with_broken_entry(self):
        self.maxDiff = None

        # Given
        path = VTK_EGG_DEFERRED_SOFTLINK
        expected_files = [
            os.path.join('EGG-INFO', 'PKG-INFO'),
            os.path.join('EGG-INFO', 'inst', 'targets.dat'),
            os.path.join('EGG-INFO', 'inst', 'files_to_install.txt'),
            os.path.join('EGG-INFO', 'usr', 'lib', 'vtk-5.10',
                         'libvtkViews.so.5.10.1'),
            os.path.join('EGG-INFO', 'usr', 'lib', 'vtk-5.10',
                         'libvtkViews.so.5.10'),
            os.path.join('EGG-INFO', 'usr', 'lib', 'vtk-5.10',
                         'libvtkViews.so'),
            os.path.join('EGG-INFO', 'spec', 'lib-provide'),
            os.path.join('EGG-INFO', 'spec', 'depend'),
            os.path.join('EGG-INFO', 'spec', 'lib-depend'),
            os.path.join('EGG-INFO', 'spec', 'summary'),
        ]

        with mkdtemp() as d:
            existing_link = os.path.join(
                d, 'EGG-INFO/usr/lib/vtk-5.10/libvtkViews.so')
            create_broken_symlink(existing_link)

            # When
            with ZipFile(path) as zp:
                zp.extractall(d)
            files = list_files(d)

            # Then
            assertCountEqual(self, files, expected_files)
            path = os.path.join(d, "EGG-INFO/usr/lib/vtk-5.10/libvtkViews.so")
            self.assertTrue(os.path.islink(path))
예제 #5
0
    def test_complete(self):
        # Given
        repository_info = BroodRepositoryInfo(
            "https://acme.com", "acme/looney")
        repository = Repository([
            P("MKL 10.3-1", repository_info),
            P("numpy 1.8.1-1; depends (MKL == 10.3-1)", repository_info),
        ])

        r_entries = [
            {
                "name": "MKL",
                "require": {},
                "version": "10.3-1",
                "version_normalized": "10.3.0.0-patch1",
            }, {
                "name": "numpy",
                "require": {
                    "MKL": "10.3.0.0-patch1",
                },
                "version": "1.8.1-1",
                "version_normalized": "1.8.1.0-patch1",
            }
        ]

        # When
        entries = list(repository_to_composer_json_dict(repository))

        # Then
        assertCountEqual(self, entries, r_entries)
예제 #6
0
    def test_endist_metadata_simple(self):
        # Given
        source = os.path.join(self.prefix, os.path.basename(NOSE_1_2_1))
        shutil.copy(NOSE_1_2_1, source)

        target = os.path.join(self.prefix, "babar-1.2.1-2.egg")
        endist = os.path.join(self.prefix, "endist.dat")
        with open(endist, "w") as fp:
            data = textwrap.dedent("""\
            packages = ["foo"]

            name = "babar"
            """)
            fp.write(data)

        # When
        with chdir(self.prefix):
            repack(source, 2, "rh5-64")

        # Then
        self.assertTrue(os.path.exists(target))
        with ZipFile(target) as zp:
            info = info_from_z(zp)
        assertCountEqual(self, info["packages"], ["foo"])
        assertCountEqual(self, info["name"], "babar")
예제 #7
0
    def test_whats_new_no_new_epd(self):
        # Given
        r_output = textwrap.dedent("""\
            Name                 installed            available
            ============================================================
            scipy                0.12.0-1             0.13.0-1
            numpy                1.7.1-1              1.7.1-2
            """)
        installed_entries = [
            dummy_installed_package_factory("numpy", "1.7.1", 1),
            dummy_installed_package_factory("scipy", "0.12.0", 1)
        ]
        remote_entries = [
            dummy_repository_package_factory("numpy", "1.7.1", 2),
            dummy_repository_package_factory("scipy", "0.13.0", 1)
        ]

        remote, installed = create_repositories(remote_entries,
                                                installed_entries)

        # When
        with mock_print() as m:
            whats_new(remote, installed)

        # Then

        # FIXME: we splitlines and compared wo caring about order, as
        # the actual line order depends on dict ordering from
        # EggCollection.query_installed.
        assertCountEqual(self, m.value.splitlines(), r_output.splitlines())
예제 #8
0
    def test_keys(self):
        # Given
        env = ControlledEnv()

        # When
        env["key1"] = "value1"
        env["key2"] = "value2"

        # Then
        assertCountEqual(self, env.keys(), list(os.environ.keys()) + ["key1", "key2"])
예제 #9
0
    def test_repair_empty_dir(self):
        # Given
        egg_path = DUMMY_EGG
        self._install_egg_empty_egg_info_dir(egg_path)

        # When
        fixer = EggInfoDirFixer(egg_path, prefix=self.prefix)
        fixer.repair()

        # Then
        assertCountEqual(self, os.listdir(fixer.egg_info_dir),
                         ["PKG-INFO", "egginst.json", "_info.json"])
예제 #10
0
    def test_no_dependencies(self):
        # Given
        parser = PrettyPackageStringParser(V)
        package_string = "numpy 1.8.0-1"

        # When
        name, version, constraints = parser.parse(package_string)

        # Then
        self.assertEqual(name, "numpy")
        self.assertEqual(version, V("1.8.0-1"))
        assertCountEqual(self, constraints, set())
예제 #11
0
    def test_repair_empty_dir(self):
        # Given
        egg_path = DUMMY_EGG
        self._install_egg_empty_egg_info_dir(egg_path)

        # When
        fixer = EggInfoDirFixer(egg_path, prefix=self.prefix)
        fixer.repair()

        # Then
        assertCountEqual(self, os.listdir(fixer.egg_info_dir),
                         ["PKG-INFO", "egginst.json", "_info.json"])
예제 #12
0
    def test_softlink(self):
        # Given
        path = ZIP_WITH_SOFTLINK

        # When/Then
        with mkdtemp() as d:
            with ZipFile(path) as zp:
                zp.extractall(d)
            paths = list_files(d)

            assertCountEqual(self, paths, [os.path.join("lib", "foo.so.1.3"),
                                           os.path.join("lib", "foo.so")])
            self.assertTrue(os.path.islink(os.path.join(d, "lib", "foo.so")))
예제 #13
0
    def test_simple_webservice(self):
        # Given
        store_location = ""
        body = _index_provider(store_location)

        # When
        packages = list(parse_index(json.loads(body), store_location))

        # Then
        self.assertTrue(len(packages) > 0)
        assertCountEqual(self, [p.name for p in packages], ["numpy", "scipy"])
        assertCountEqual(self, [p.full_version for p in packages], ["1.8.0-1",
                                                                    "0.14.0-1"])
예제 #14
0
    def test_simple_webservice(self):
        # Given
        store_location = ""
        body = _index_provider(store_location)

        # When
        packages = list(parse_index(json.loads(body), store_location))

        # Then
        self.assertTrue(len(packages) > 0)
        assertCountEqual(self, [p.name for p in packages], ["numpy", "scipy"])
        assertCountEqual(self, [p.full_version for p in packages],
                         ["1.8.0-1", "0.14.0-1"])
예제 #15
0
    def test_what_provides_simple(self):
        # Given
        index_path = os.path.join(DATA_DIR, "numpy_index.json")
        repository = repository_from_index(index_path)
        requirement = Requirement._from_string("numpy >= 1.8.0")

        # When
        pool = Pool([repository])
        candidates = pool.what_provides(requirement)
        versions = [candidate.full_version for candidate in candidates]

        # Then
        assertCountEqual(self, versions,
                         ["1.8.0-1", "1.8.0-2", "1.8.0-3", "1.8.1-1"])
예제 #16
0
    def test_simple_webservice(self):
        # Given
        store_url = "https://acme.com"
        repository_info = OldstyleRepositoryInfo(store_url)
        body = _index_provider(repository_info)

        # When
        packages = list(parse_index(json.loads(body), store_url))

        # Then
        self.assertTrue(len(packages) > 0)
        assertCountEqual(self, [p.name for p in packages], ["numpy", "scipy"])
        assertCountEqual(self, [p.full_version for p in packages], ["1.8.0-1",
                                                                    "0.14.0-1"])
예제 #17
0
    def test_repair_file(self):
        # Given
        egg_path = DUMMY_EGG
        self._install_egg_file_egg_info_dir(egg_path)

        # When
        fixer = EggInfoDirFixer(egg_path, prefix=self.prefix)
        old_egg_info_file_md5 = compute_md5(fixer.egg_info_dir)
        fixer.repair()

        # Then
        assertCountEqual(self, os.listdir(fixer.egg_info_dir),
                         ["PKG-INFO", "egginst.json", "_info.json"])
        self.assertEqual(compute_md5(os.path.join(fixer.egg_info_dir, "PKG-INFO")),
                         old_egg_info_file_md5)
예제 #18
0
    def test_softlink(self):
        # Given
        path = ZIP_WITH_SOFTLINK

        # When/Then
        with mkdtemp() as d:
            with ZipFile(path) as zp:
                zp.extractall(d)
            paths = list_files(d)

            assertCountEqual(self, paths, [
                os.path.join("lib", "foo.so.1.3"),
                os.path.join("lib", "foo.so")
            ])
            self.assertTrue(os.path.islink(os.path.join(d, "lib", "foo.so")))
예제 #19
0
    def test_repair_file(self):
        # Given
        egg_path = DUMMY_EGG
        self._install_egg_file_egg_info_dir(egg_path)

        # When
        fixer = EggInfoDirFixer(egg_path, prefix=self.prefix)
        old_egg_info_file_md5 = compute_md5(fixer.egg_info_dir)
        fixer.repair()

        # Then
        assertCountEqual(self, os.listdir(fixer.egg_info_dir),
                         ["PKG-INFO", "egginst.json", "_info.json"])
        self.assertEqual(compute_md5(os.path.join(fixer.egg_info_dir, "PKG-INFO")),
                         old_egg_info_file_md5)
예제 #20
0
    def test_find_packages_invalid_versions(self):
        # Given
        entries = [
            dummy_installed_package_factory("numpy", "1.6.1", 1),
            dummy_installed_package_factory("numpy", "1.8k", 2),
        ]
        repository = Repository()
        for entry in entries:
            repository.add_package(entry)

        # When
        packages = repository.find_packages("numpy")

        # Then
        self.assertEqual(len(packages), 2)
        assertCountEqual(self, packages, entries)
예제 #21
0
    def test_find_packages_invalid_versions(self):
        # Given
        entries = [
            dummy_installed_package_factory("numpy", "1.6.1", 1),
            dummy_installed_package_factory("numpy", "1.8k", 2),
        ]
        repository = Repository()
        for entry in entries:
            repository.add_package(entry)

        # When
        packages = repository.find_packages("numpy")

        # Then
        self.assertEqual(len(packages), 2)
        assertCountEqual(self, packages, entries)
예제 #22
0
    def test_sorted_packages_invalid(self):
        # Given
        entries = [
            dummy_installed_package_factory("numpy", "1.6.1", 1),
            dummy_installed_package_factory("numpy", "1.8k", 2),
        ]
        repository = Repository()
        for entry in entries:
            repository.add_package(entry)

        # When
        packages = repository.find_sorted_packages("numpy")

        # Then
        self.assertEqual(len(packages), 2)
        assertCountEqual(self, [p.version for p in packages],
                         [EnpkgVersion.from_string(v)
                          for v in ("1.6.1-1", "1.8k-2")])
예제 #23
0
    def test_sorted_packages_invalid(self):
        # Given
        entries = [
            dummy_installed_package_factory("numpy", "1.6.1", 1),
            dummy_installed_package_factory("numpy", "1.8k", 2),
        ]
        repository = Repository()
        for entry in entries:
            repository.add_package(entry)

        # When
        packages = repository.find_sorted_packages("numpy")

        # Then
        self.assertEqual(len(packages), 2)
        assertCountEqual(
            self, [p.version for p in packages],
            [EnpkgVersion.from_string(v) for v in ("1.6.1-1", "1.8k-2")])
예제 #24
0
    def test_delete_simple(self):
        # Given
        eggs = ["flake8-2.0.0-2.egg", "nose-1.3.0-1.egg", "nose-1.2.1-1.egg"]
        repository = Repository()
        for egg in eggs:
            path = os.path.join(_EGGINST_COMMON_DATA, egg)
            package = RepositoryPackageMetadata.from_egg(path)
            repository.add_package(package)

        path = os.path.join(_EGGINST_COMMON_DATA, "nose-1.3.0-1.egg")
        to_remove = PackageMetadata.from_egg(path)

        # When
        repository.delete_package(to_remove)

        # Then
        assertCountEqual(self, [p.key for p in repository.iter_packages()],
                         ["flake8-2.0.0-2.egg", "nose-1.2.1-1.egg"])
예제 #25
0
    def test_delete_simple(self):
        # Given
        eggs = ["flake8-2.0.0-2.egg", "nose-1.3.0-1.egg", "nose-1.2.1-1.egg"]
        repository = Repository()
        for egg in eggs:
            path = os.path.join(_EGGINST_COMMON_DATA, egg)
            package = RepositoryPackageMetadata.from_egg(path)
            repository.add_package(package)

        path = os.path.join(_EGGINST_COMMON_DATA, "nose-1.3.0-1.egg")
        to_remove = PackageMetadata.from_egg(path)

        # When
        repository.delete_package(to_remove)

        # Then
        assertCountEqual(self, [p.key for p in repository.iter_packages()],
                         ["flake8-2.0.0-2.egg", "nose-1.2.1-1.egg"])
예제 #26
0
    def test_update(self):
        # Given
        def repository_factory_from_egg(filenames):
            repository = Repository()
            for filename in filenames:
                path = os.path.join(_EGGINST_COMMON_DATA, filename)
                package = RemotePackageMetadata.from_egg(path)
                repository.add_package(package)
            return repository

        egg_set1 = (
            "dummy-1.0.1-1.egg",
            "dummy_with_appinst-1.0.0-1.egg",
            "dummy_with_entry_points-1.0.0-1.egg",
            "dummy_with_proxy-1.3.40-3.egg",
        )

        egg_set2 = (
            "dummy_with_proxy_scripts-1.0.0-1.egg",
            "dummy_with_proxy_softlink-1.0.0-1.egg",
            "nose-1.2.1-1.egg",
            "nose-1.3.0-1.egg",
            "nose-1.3.0-2.egg",
        )

        repository = Repository()
        repository1 = repository_factory_from_egg(egg_set1)
        repository2 = repository_factory_from_egg(egg_set2)

        # When
        repository.update(repository1)

        # Then
        assertCountEqual(self, iter(repository), iter(repository1))

        # When
        repository.update(repository2)

        # Then
        assertCountEqual(
            self, iter(repository),
            itertools.chain(iter(repository1), iter(repository2))
        )
예제 #27
0
    def test_simple(self):
        # Given
        path = NOSE_1_3_0
        r_paths = [
            os.path.join("EGG-INFO", "entry_points.txt"),
            os.path.join("EGG-INFO", "PKG-INFO"),
            os.path.join("EGG-INFO", "spec", "depend"),
            os.path.join("EGG-INFO", "spec", "summary"),
            os.path.join("EGG-INFO", "usr", "share", "man", "man1", "nosetests.1"),
        ]

        # When
        with mkdtemp() as d:
            with ZipFile(path) as zp:
                zp.extractall(d)
            paths = list_files(d)

        # Then
        assertCountEqual(self, paths, r_paths)
예제 #28
0
    def test_update_check_epd(self):
        # Given
        remote_entries = [dummy_repository_package_factory("EPD", "7.3", 1)]
        installed_entries = [dummy_installed_package_factory("EPD", "7.2", 1)]

        remote_repository, installed_repository = \
            self._create_repositories(remote_entries, installed_entries)

        # When
        updates, EPD_update = updates_check(remote_repository,
                                            installed_repository)

        # Then
        self.assertEqual(updates, [])
        self.assertEqual(len(EPD_update), 1)

        epd_update0 = EPD_update[0]
        assertCountEqual(self, epd_update0.keys(), ["current", "update"])
        self.assertEqual(epd_update0["current"].version, V("7.2-1"))
        self.assertEqual(epd_update0["update"].version, V("7.3-1"))
예제 #29
0
    def test_update_check_epd(self):
        # Given
        remote_entries = [dummy_repository_package_factory("EPD", "7.3", 1)]
        installed_entries = [dummy_installed_package_factory("EPD", "7.2", 1)]

        remote_repository, installed_repository = \
            self._create_repositories(remote_entries, installed_entries)

        # When
        updates, EPD_update = updates_check(remote_repository,
                                            installed_repository)

        # Then
        self.assertEqual(updates, [])
        self.assertEqual(len(EPD_update), 1)

        epd_update0 = EPD_update[0]
        assertCountEqual(self, epd_update0.keys(), ["current", "update"])
        self.assertEqual(epd_update0["current"].version, V("7.2-1"))
        self.assertEqual(epd_update0["update"].version, V("7.3-1"))
예제 #30
0
    def test_simple(self):
        # Given
        path = NOSE_1_3_0
        r_paths = [
            os.path.join("EGG-INFO", "entry_points.txt"),
            os.path.join("EGG-INFO", "PKG-INFO"),
            os.path.join("EGG-INFO", "spec", "depend"),
            os.path.join("EGG-INFO", "spec", "summary"),
            os.path.join("EGG-INFO", "usr", "share", "man", "man1",
                         "nosetests.1"),
        ]

        # When
        with mkdtemp() as d:
            with ZipFile(path) as zp:
                zp.extractall(d)
            paths = list_files(d)

        # Then
        assertCountEqual(self, paths, r_paths)
예제 #31
0
    def test_repair_dry_run(self):
        # Given
        broken_as_file_egg = DUMMY_EGG
        self._install_egg_file_egg_info_dir(broken_as_file_egg)

        broken_as_empty_dir = DUMMY_EGG_WITH_ENTRY_POINTS
        self._install_egg_empty_egg_info_dir(broken_as_empty_dir)

        non_broken_egg = DUMMY_EGG_WITH_APPINST
        self._install_egg(non_broken_egg)

        # When
        repair(self.prefix, True)

        # Then
        self.assertTrue(os.path.isfile(self._egg_info_path(broken_as_file_egg)))
        assertCountEqual(self,
                         os.listdir(self._egg_info_path(broken_as_empty_dir)),
                         [])
        assertCountEqual(self, os.listdir(self._egg_info_path(non_broken_egg)),
                         ["PKG-INFO"])
예제 #32
0
    def test_repair_dry_run(self):
        # Given
        broken_as_file_egg = DUMMY_EGG
        self._install_egg_file_egg_info_dir(broken_as_file_egg)

        broken_as_empty_dir = DUMMY_EGG_WITH_ENTRY_POINTS
        self._install_egg_empty_egg_info_dir(broken_as_empty_dir)

        non_broken_egg = DUMMY_EGG_WITH_APPINST
        self._install_egg(non_broken_egg)

        # When
        repair(self.prefix, True)

        # Then
        self.assertTrue(os.path.isfile(self._egg_info_path(broken_as_file_egg)))
        assertCountEqual(self,
                         os.listdir(self._egg_info_path(broken_as_empty_dir)),
                         [])
        assertCountEqual(self, os.listdir(self._egg_info_path(non_broken_egg)),
                         ["PKG-INFO"])
예제 #33
0
    def test_update_check_new_available(self):
        # Given
        remote_entries = [
            dummy_repository_package_factory("dummy", "1.2.0", 1),
            dummy_repository_package_factory("dummy", "0.9.8", 1)
        ]
        installed_entries = [
            dummy_installed_package_factory("dummy", "1.0.1", 1)
        ]

        remote_repository, installed_repository = \
            self._create_repositories(remote_entries, installed_entries)

        # When
        updates, EPD_update = updates_check(remote_repository,
                                            installed_repository)

        # Then
        self.assertEqual(EPD_update, [])
        self.assertEqual(len(updates), 1)
        update0 = updates[0]
        assertCountEqual(self, update0.keys(), ["current", "update"])
        self.assertEqual(update0["current"].version, V("1.0.1-1"))
        self.assertEqual(update0["update"].version, V("1.2.0-1"))
예제 #34
0
    def test_update_check_new_available(self):
        # Given
        remote_entries = [
            dummy_repository_package_factory("dummy", "1.2.0", 1),
            dummy_repository_package_factory("dummy", "0.9.8", 1)
        ]
        installed_entries = [
            dummy_installed_package_factory("dummy", "1.0.1", 1)
        ]

        remote_repository, installed_repository = \
            self._create_repositories(remote_entries, installed_entries)

        # When
        updates, EPD_update = updates_check(remote_repository,
                                            installed_repository)

        # Then
        self.assertEqual(EPD_update, [])
        self.assertEqual(len(updates), 1)
        update0 = updates[0]
        assertCountEqual(self, update0.keys(), ["current", "update"])
        self.assertEqual(update0["current"].version, V("1.0.1-1"))
        self.assertEqual(update0["update"].version, V("1.2.0-1"))
예제 #35
0
    def test_repair(self):
        # Given
        broken_as_file_egg = DUMMY_EGG
        self._install_egg_file_egg_info_dir(broken_as_file_egg)

        broken_as_empty_dir = DUMMY_EGG_WITH_ENTRY_POINTS
        self._install_egg_empty_egg_info_dir(broken_as_empty_dir)

        non_broken_egg = DUMMY_EGG_WITH_APPINST
        self._install_egg(non_broken_egg)

        # When
        repair(self.prefix, False)

        # Then
        assertCountEqual(self, os.listdir(self._egg_info_path(broken_as_file_egg)),
                         ["PKG-INFO", "egginst.json", "_info.json"])
        assertCountEqual(self, os.listdir(self._egg_info_path(broken_as_empty_dir)),
                         ["entry_points.txt", "PKG-INFO", "egginst.json",
                          "_info.json"])
        assertCountEqual(self, os.listdir(self._egg_info_path(non_broken_egg)),
                         ["PKG-INFO"])
예제 #36
0
    def test_repair(self):
        # Given
        broken_as_file_egg = DUMMY_EGG
        self._install_egg_file_egg_info_dir(broken_as_file_egg)

        broken_as_empty_dir = DUMMY_EGG_WITH_ENTRY_POINTS
        self._install_egg_empty_egg_info_dir(broken_as_empty_dir)

        non_broken_egg = DUMMY_EGG_WITH_APPINST
        self._install_egg(non_broken_egg)

        # When
        repair(self.prefix, False)

        # Then
        assertCountEqual(self, os.listdir(self._egg_info_path(broken_as_file_egg)),
                         ["PKG-INFO", "egginst.json", "_info.json"])
        assertCountEqual(self, os.listdir(self._egg_info_path(broken_as_empty_dir)),
                         ["entry_points.txt", "PKG-INFO", "egginst.json",
                          "_info.json"])
        assertCountEqual(self, os.listdir(self._egg_info_path(non_broken_egg)),
                         ["PKG-INFO"])