diff --git a/src/fetchcode/package_versions.py b/src/fetchcode/package_versions.py index 5fa8116..da1096b 100644 --- a/src/fetchcode/package_versions.py +++ b/src/fetchcode/package_versions.py @@ -136,6 +136,9 @@ def get_cargo_versions_from_purl(purl): url = f"https://crates.io/api/v1/crates/{purl.name}" response = get_response(url=url, content_type="json", headers={"User-Agent": "pm_bot"}) + if not response: + return + for version_info in response.get("versions"): yield PackageVersion( value=version_info["num"], diff --git a/tests/test_package_versions.py b/tests/test_package_versions.py index a73cc53..cc19ca7 100644 --- a/tests/test_package_versions.py +++ b/tests/test_package_versions.py @@ -79,6 +79,16 @@ def test_get_cargo_versions_from_purl(mock_get_response): check_results_against_json(result, expected_file) +@mock.patch("fetchcode.package_versions.get_response") +def test_get_cargo_versions_from_purl_no_response(mock_get_response): + mock_get_response.return_value = None + purl = "pkg:cargo/yprox" + + result = list(versions(purl)) + + assert result == [] + + @mock.patch("fetchcode.package_versions.get_response") def test_get_gem_versions_from_purl(mock_get_response): side_effect = [get_json_data(data_location / "gem_mock_data.json")]