Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/packageurl/contrib/purl2url.py
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,7 @@ def build_swift_download_url(purl):
version = purl_data.version
namespace = purl_data.namespace

if not (namespace or name or version):
if not (namespace and name and version):
return

return f"https://{namespace}/{name}/archive/{version}.zip"
Expand Down
24 changes: 24 additions & 0 deletions tests/contrib/test_purl2url.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,3 +194,27 @@ def test_purl2url_get_repo_url_with_invalid_purls():
with pytest.raises(Exception) as e_info:
purl2url.get_repo_url(purl)
assert "Invalid PURL" == e_info


@pytest.mark.parametrize(
"purl",
[
"pkg:swift/github.com/apple/swift-nio",
"pkg:swift/swift-nio@2.0.0",
"pkg:swift/swift-nio",
],
)
def test_swift_download_requires_namespace_and_version(purl):
assert purl2url.get_download_url(purl) is None


def test_swift_download_with_required_fields():
assert (
purl2url.get_download_url("pkg:swift/github.com/apple/swift-nio@2.0.0")
== "https://github.com/apple/swift-nio/archive/2.0.0.zip"
)


def test_swift_download_missing_version_uses_download_qualifier():
purl = "pkg:swift/github.com/apple/swift-nio" "?download_url=https://example.com/swift-nio.zip"
assert purl2url.get_download_url(purl) == "https://example.com/swift-nio.zip"
Comment thread
codewithfourtix marked this conversation as resolved.