def test__filter__find_files(self) -> None: absolute_file_path = Path(self.tempdir.name) / "requirements.txt" with open(absolute_file_path, "w") as fh: fh.write("""\ # This is needed for workshop 1 # foo==1.2.0 # via -r requirements.in """) mock_config(f"""\ [mirror] storage-backend = filesystem workers = 2 [plugins] enabled = project_requirements [allowlist] requirements = {absolute_file_path} """) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) mirror.packages_to_sync = { "foo": "", "bar": "", "baz": "", } mirror._filter_packages() self.assertEqual({"foo": ""}, mirror.packages_to_sync)
def test__filter__commented__out(self) -> None: mock_config("""\ [mirror] storage-backend = filesystem workers = 2 [plugins] enabled = allowlist_project [allowlist] packages = foo==1.2.3 # inline comment # bar """) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) mirror.packages_to_sync = { "foo": "", "bar": "", "snu": "", } mirror._filter_packages() self.assertEqual({"foo": ""}, mirror.packages_to_sync)
def test__filter__varying__specifiers(self) -> None: mock_config( """\ [mirror] storage-backend = filesystem [plugins] enabled = allowlist_project [allowlist] packages = foo==1.2.3 bar~=3.0,<=1.5 """ ) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) mirror.packages_to_sync = { "foo": "", "bar": "", "snu": "", } mirror._filter_packages() self.assertEqual({"foo": "", "bar": ""}, mirror.packages_to_sync)
def test_plugin_check_match(self) -> None: mock_config(self.config_contents) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) mirror.packages_to_sync = { "foo-good": "", "foo-evil": "", "foo-neutral": "" } mirror._filter_packages() assert list(mirror.packages_to_sync.keys()) == ["foo-good"]
def test__filter__nomatch_package(self) -> None: mock_config("""\ [blocklist] plugins = blocklist_project packages = foo """) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) mirror.packages_to_sync = {"foo2": ""} mirror._filter_packages() self.assertIn("foo2", mirror.packages_to_sync.keys())
def test_mirror_filter_packages_nomatch_package_with_spec(tmpdir: Path) -> None: """ Package lines with a PEP440 spec on them should not be filtered from the list of packages. """ test_configuration = """\ [plugins] enable = blocklist_project [blocklist] packages = example3>2.0.0 """ Singleton._instances = {} with open("test.conf", "w") as testconfig_handle: testconfig_handle.write(test_configuration) BandersnatchConfig("test.conf") m = BandersnatchMirror(tmpdir, mock.Mock()) m.packages_to_sync = {"example1": "", "example3": ""} m._filter_packages() assert "example3" in m.packages_to_sync.keys()
def test_mirror_filter_packages_match(tmpdir: Path) -> None: """ Packages that exist in the blocklist should be removed from the list of packages to sync. """ test_configuration = """\ [plugins] enabled = blocklist_project [blocklist] packages = example1 """ Singleton._instances = {} with open("test.conf", "w") as testconfig_handle: testconfig_handle.write(test_configuration) BandersnatchConfig("test.conf") m = BandersnatchMirror(tmpdir, mock.Mock()) m.packages_to_sync = {"example1": "", "example2": ""} m._filter_packages() assert "example1" not in m.packages_to_sync.keys()
def test__filter__matches__package(self) -> None: mock_config("""\ [mirror] storage-backend = filesystem workers = 2 [plugins] enabled = allowlist_project [allowlist] packages = foo """) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) mirror.packages_to_sync = {"foo": ""} mirror._filter_packages() self.assertIn("foo", mirror.packages_to_sync.keys())
def test__filter__name_only(self) -> None: mock_config("""\ [mirror] storage-backend = filesystem [plugins] enabled = blocklist_project [blocklist] packages = foo==1.2.3 """) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) mirror.packages_to_sync = {"foo": "", "foo2": ""} mirror._filter_packages() self.assertIn("foo", mirror.packages_to_sync.keys()) self.assertIn("foo2", mirror.packages_to_sync.keys())