Skip to content

Commit 7663034

Browse files
committed
Add tests
Signed-off-by: Tushar Goel <[email protected]>
1 parent 0d1b9a7 commit 7663034

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

src/python_inspector/api.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,7 @@ def resolve_dependencies(
155155
for req_file in requirement_files:
156156
deps = dependencies.get_dependencies_from_requirements(requirements_file=req_file)
157157
for extra_data in dependencies.get_extra_data_from_requirements(requirements_file=req_file):
158-
extra_index_urls = extra_data.get("extra_index_urls") or []
159-
index_url = extra_data.get("index_url") or []
160-
if isinstance(extra_index_urls, list):
161-
index_urls = (*index_urls, *tuple(extra_index_urls))
162-
if isinstance(index_url, str):
163-
index_urls = (*index_urls, index_url)
158+
index_urls = get_index_urls(index_urls, extra_data)
164159
direct_dependencies.extend(deps)
165160
package_data = [
166161
pkg_data.to_dict() for pkg_data in PipRequirementsFileHandler.parse(location=req_file)
@@ -324,6 +319,25 @@ async def get_pypi_data(package):
324319
)
325320

326321

322+
def get_index_urls(index_urls: Tuple, extra_data: Dict) -> Tuple:
323+
"""
324+
Return a list of index URLs from the extra_data.
325+
The extra_data is a dictionary that may contain
326+
"extra_index_urls" and "index_url" keys.
327+
"""
328+
if isinstance(index_urls, str):
329+
index_urls = [index_urls]
330+
if isinstance(index_urls, tuple):
331+
index_urls = list(index_urls)
332+
extra_index_urls = extra_data.get("extra_index_urls") or []
333+
index_url = extra_data.get("index_url") or []
334+
if isinstance(extra_index_urls, list):
335+
index_urls = (*index_urls, *tuple(extra_index_urls))
336+
if isinstance(index_url, str):
337+
index_urls = (*index_urls, *tuple([index_url]))
338+
return tuple(set(index_urls))
339+
340+
327341
resolver_api = resolve_dependencies
328342

329343

tests/test_api.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from commoncode.testcase import FileDrivenTesting
1616
from test_cli import check_data_results
1717

18+
from python_inspector.api import get_index_urls
1819
from python_inspector.api import resolver_api
1920

2021
test_env = FileDrivenTesting()
@@ -128,3 +129,31 @@ def test_api_with_partial_setup_py():
128129
analyze_setup_py_insecurely=True,
129130
)
130131
check_data_results(results=results.to_dict(generic_paths=True), expected_file=expected_file)
132+
133+
134+
def test_get_index_urls():
135+
136+
# pass as a tuple
137+
index_urls = get_index_urls(
138+
index_urls=("https://pypi.org/simple",),
139+
extra_data={"extra_index_urls": ["https://pypi.org/simple", "https://example.com/simple"]},
140+
)
141+
142+
expected = ["https://example.com/simple", "https://pypi.org/simple"]
143+
144+
assert sorted(list(index_urls)) == expected
145+
146+
# pass as a string
147+
index_urls = get_index_urls(
148+
index_urls=("https://pypi.org/simple"),
149+
extra_data={"extra_index_urls": ["https://pypi.org/simple", "https://example.com/simple"]},
150+
)
151+
152+
assert sorted(list(index_urls)) == expected
153+
154+
index_urls = get_index_urls(
155+
index_urls=("https://pypi.org/simple",),
156+
extra_data={"index_url": "https://pypi.org/simple"},
157+
)
158+
159+
assert index_urls == ("https://pypi.org/simple",)

0 commit comments

Comments
 (0)