def test__dont__filter__prereleases(self) -> None: mock_config( """\ [plugins] enabled = allowlist_release [allowlist] packages = foo<=1.2.0 """ ) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) pkg = Package("foo", 1) pkg._metadata = { "info": {"name": "foo"}, "releases": { "1.1.0a2": {}, "1.1.1beta1": {}, "1.2.0": {}, "1.2.1": {}, "1.2.2alpha3": {}, "1.2.3rc1": {}, }, } pkg.filter_all_releases(mirror.filters.filter_release_plugins()) self.assertEqual(pkg.releases, {"1.1.0a2": {}, "1.1.1beta1": {}, "1.2.0": {}})
def test__casing__no__affect(self) -> None: mock_config("""\ [mirror] storage-backend = filesystem workers = 2 [plugins] enabled = allowlist_release [allowlist] packages = Foo<=1.2.0 """) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) pkg = Package("foo", 1) pkg._metadata = { "info": { "name": "foo" }, "releases": { "1.2.0": {}, "1.2.1": {} }, } pkg.filter_all_releases(mirror.filters.filter_release_plugins()) self.assertEqual(pkg.releases, {"1.2.0": {}})
def test__filter__matches__release(self) -> None: with open(Path(self.tempdir.name) / "requirements.txt", "w") as fh: fh.write( """\ # This is needed for workshop 1 # foo==1.2.0 # via -r requirements.in """ ) mock_config( f"""\ [plugins] enabled = project_requirements project_requirements_pinned [allowlist] requirements_path = {self.tempdir.name} requirements = requirements.txt """ ) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) pkg = Package("foo", 1) pkg._metadata = { "info": {"name": "foo"}, "releases": {"1.2.0": {}, "1.2.1": {}}, } pkg.filter_all_releases(mirror.filters.filter_release_plugins()) self.assertEqual({"1.2.0": {}}, pkg.releases)
def test_latest_releases_keep_stable(self) -> None: mock_config(self.config_contents) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) pkg = Package("foo", 1) pkg._metadata = { "info": { "name": "foo", "version": "2.0.0" }, # stable version "releases": { "1.0.0": {}, "1.1.0": {}, "1.1.1": {}, "1.1.2": {}, "1.1.3": {}, "2.0.0": {}, # <= stable version, keep it "2.0.1b1": {}, "2.0.1b2": {}, # <= most recent, keep it }, } pkg.filter_all_releases(mirror.filters.filter_release_plugins()) assert pkg.releases == {"2.0.1b2": {}, "2.0.0": {}}
def test_latest_releases_uninitialized(self) -> None: mock_config(self.config_contents) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) pkg = Package("foo", 1) pkg._metadata = { "info": { "name": "foo", "version": "2.0.0" }, "releases": { "1.0.0": {}, "1.1.0": {}, "1.1.1": {}, "1.1.2": {}, "1.1.3": {}, "2.0.0": {}, }, } pkg.filter_all_releases(mirror.filters.filter_release_plugins()) assert pkg.releases == { "1.0.0": {}, "1.1.0": {}, "1.1.1": {}, "1.1.2": {}, "1.1.3": {}, "2.0.0": {}, }
def test__filter__matches__release(self) -> None: mock_config("""\ [plugins] enabled = blocklist_release [blocklist] packages = foo==1.2.0 """) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) pkg = Package("foo", 1) pkg._metadata = { "info": { "name": "foo" }, "releases": { "1.2.0": {}, "1.2.1": {} }, } pkg.filter_all_releases(mirror.filters.filter_release_plugins()) self.assertEqual(pkg.releases, {"1.2.1": {}})
def test_latest_releases_ensure_reusable(self) -> None: """ Tests the filter multiple times to ensure no state is preserved and thus is reusable between packages """ mock_config(self.config_contents) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) pkg1 = Package("foo", 1) pkg1._metadata = { "info": { "name": "foo", "version": "2.0.0" }, "releases": { "0.1.1": {}, "0.1.2": {}, "0.1.3": {}, "1.0.0": {}, "1.1.0": {}, "1.2.0": {}, "2.0.0": {}, }, } pkg2 = Package("bar", 1) pkg2._metadata = { "info": { "name": "bar", "version": "0.3.0" }, "releases": { "0.1.0": {}, "0.1.1": {}, "0.1.2": {}, "0.1.3": {}, "0.1.4": {}, "0.1.5": {}, "0.2.0": {}, "0.3.0": {}, }, } pkg1.filter_all_releases(mirror.filters.filter_release_plugins()) pkg2.filter_all_releases(mirror.filters.filter_release_plugins()) assert pkg1.releases == {"1.2.0": {}, "2.0.0": {}} assert pkg2.releases == {"0.2.0": {}, "0.3.0": {}}
def test_plugin_check_match(self) -> None: mock_config(self.config_contents) mirror = BandersnatchMirror(Path("."), Master(url="https://foo.bar.com")) pkg = Package("foo", serial=1) pkg._metadata = { "info": {"name": "foo", "version": "1.2.0"}, "releases": { "1.2.0alpha1": {}, "1.2.0a2": {}, "1.2.0beta1": {}, "1.2.0b2": {}, "1.2.0rc1": {}, "1.2.0": {}, }, } pkg.filter_all_releases(mirror.filters.filter_release_plugins()) assert pkg.releases == {"1.2.0": {}}