Skip to content

Commit 1ede5dd

Browse files
committed
fix scan on empty python dep and add test cases
1 parent c49e008 commit 1ede5dd

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

guarddog/scanners/pypi_project_scanner.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,11 @@ def get_matched_versions(versions: set[str], semver_range: str) -> set[str]:
7676

7777
# Filters to specified versions
7878
try:
79-
spec = Specifier(semver_range)
80-
result = [Version(m) for m in spec.filter(versions)]
79+
matching_versions = versions
80+
if semver_range:
81+
spec = Specifier(semver_range)
82+
matching_versions = set(spec.filter(versions))
83+
result = [Version(m) for m in matching_versions]
8184
except ValueError:
8285
# use it raw
8386
return set([semver_range])

tests/core/test_npm_requirements_scanner.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,18 @@ def test_npm_requirements_scanner():
1010
{
1111
"dependencies": {
1212
"non-existing": "*",
13-
"express": "4.x"
13+
"express": "4.x",
14+
"cors": "*"
1415
}
1516
}
1617
""")
1718
assert "non-existing" not in result # ignoring non existing packages
1819
assert "express" in result
20+
lookup = next(
21+
filter(lambda r: r.name == "cors", result), None
22+
)
23+
assert lookup is not None
24+
assert len(lookup.versions) == 1
1925

2026

2127
def test_npm_find_requirements():

tests/core/test_pypi_requirements_scanner.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def test_requirements_scanner_on_git_url_packages():
3939
"https://wxpython.org/Phoenix/snapshot-builds/wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl",
4040
"guarddog @ git+https://github.com/DataDog/guarddog.git",
4141
"git+https://github.com/DataDog/guarddog.git",
42+
"requests",
4243
]
4344
)
4445
)
@@ -48,4 +49,10 @@ def test_requirements_scanner_on_git_url_packages():
4849
assert lookup is not None
4950
assert "git+https://github.com/DataDog/guarddog.git" in [v.version for v in lookup.versions]
5051
assert "flask" in result
51-
assert len(result) == 2
52+
assert len(result) == 3
53+
lookup = next(
54+
filter(lambda r: r.name == "requests", result), None
55+
)
56+
assert lookup is not None
57+
assert len(lookup.versions) == 1
58+

0 commit comments

Comments
 (0)