diff --git a/swh/lister/nixguix/lister.py b/swh/lister/nixguix/lister.py --- a/swh/lister/nixguix/lister.py +++ b/swh/lister/nixguix/lister.py @@ -157,22 +157,12 @@ if urlparsed.scheme not in ("http", "https", "ftp"): raise ArtifactNatureMistyped(f"Mistyped artifact '{url}'") - errors = [] - query_params = dict(parse_qsl(urlparsed.query)) - for path in [query_params.get(key) for key in ["f", "file", "url", "name"]] + [ - urlparsed.path - ]: - if not path: - continue - try: - file_ = Path(path).suffixes[-1] - break - except IndexError as e: - errors.append(ArtifactWithoutExtension(e)) - - if errors: - raise errors[-1] - return file_.lstrip(".") in TARBALL_EXTENSIONS + paths = [ + Path(p) for (_, p) in [("_", urlparsed.path)] + parse_qsl(urlparsed.query) + ] + if not any(path.suffix != "" for path in paths): + raise ArtifactWithoutExtension + return any(path.suffix.endswith(tuple(TARBALL_EXTENSIONS)) for path in paths) index = random.randrange(len(urls)) url = urls[index] diff --git a/swh/lister/nixguix/tests/test_lister.py b/swh/lister/nixguix/tests/test_lister.py --- a/swh/lister/nixguix/tests/test_lister.py +++ b/swh/lister/nixguix/tests/test_lister.py @@ -47,7 +47,7 @@ @pytest.mark.parametrize( "query_param", - ["file", "f", "url", "name"], + ["file", "f", "url", "name", "anykeyreally"], ) def test_is_tarball_not_so_simple(query_param): """More involved check on tarball should discriminate between tarball and file"""