Skip to content

Commit fa0ffce

Browse files
committed
Update cargo tests
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 61e6e44 commit fa0ffce

2 files changed

Lines changed: 11 additions & 54 deletions

File tree

minecode_pipelines/pipelines/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ def mine_and_publish_packageurls(self):
9191

9292
self.log(f"Mine PackageURL for {package_count:,d} packages.")
9393
for base, purls in progress.iter(self.mine_packageurls()):
94+
if not purls or not base:
95+
continue
96+
9497
package_repo, datafile_path = data_cluster.get_datafile_repo_and_path(purl=base)
9598

9699
if package_repo not in checked_out_repos:

minecode_pipelines/tests/pipes/test_cargo.py

Lines changed: 8 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,19 @@
88
#
99

1010
import json
11-
import tempfile
11+
1212
from pathlib import Path
13-
from unittest import mock
14-
from unittest.mock import Mock, patch
13+
1514
import saneyaml
16-
from django.test import TestCase
15+
from unittest import TestCase
1716

18-
from minecode_pipelines.pipes import write_data_to_yaml_file
19-
from minecode_pipelines.pipes.cargo import store_cargo_packages
17+
from minecode_pipelines.pipes.cargo import get_cargo_packages
2018

2119
DATA_DIR = Path(__file__).parent.parent / "test_data" / "cargo"
2220

2321

2422
class CargoPipelineTests(TestCase):
25-
@patch("minecode_pipelines.pipes.cargo.write_data_to_yaml_file")
26-
def test_collect_packages_from_cargo_calls_write(self, mock_write):
23+
def test_collect_packages_from_cargo_calls_write(self):
2724
packages_file = DATA_DIR / "c5store"
2825
expected_file = DATA_DIR / "c5store-expected.yaml"
2926

@@ -36,50 +33,7 @@ def test_collect_packages_from_cargo_calls_write(self, mock_write):
3633
with open(expected_file, encoding="utf-8") as f:
3734
expected = saneyaml.load(f)
3835

39-
with tempfile.TemporaryDirectory() as tmpdir:
40-
repo = Mock()
41-
repo.working_dir = tmpdir
42-
43-
store_cargo_packages(packages, repo)
44-
45-
mock_write.assert_called_once()
46-
args, kwargs = mock_write.call_args
47-
base_purl, written_packages = kwargs["path"], kwargs["data"]
48-
49-
expected_base_purl = (
50-
Path(tmpdir) / "aboutcode-packages-cargo-0" / "cargo" / "c5store" / "purls.yml"
51-
)
52-
53-
self.assertEqual(str(base_purl), str(expected_base_purl))
54-
self.assertEqual(written_packages, expected)
55-
56-
def _assert_purls_written(self, purls):
57-
with tempfile.TemporaryDirectory() as tmpdir:
58-
repo_dir = Path(tmpdir)
59-
60-
mock_repo = mock.MagicMock()
61-
mock_repo.working_dir = str(repo_dir)
62-
mock_repo.index.add = mock.MagicMock()
63-
64-
purls_file = repo_dir / "purls.yaml"
65-
66-
write_data_to_yaml_file(purls_file, purls)
67-
68-
self.assertTrue(purls_file.exists())
69-
70-
with open(purls_file, encoding="utf-8") as f:
71-
content = saneyaml.load(f)
72-
73-
self.assertEqual(content, purls)
74-
75-
def test_add_purl_result_with_mock_repo(self):
76-
self._assert_purls_written(
77-
[{"purl": "pkg:pypi/django@4.2.0"}, {"purl": "pkg:pypi/django@4.3.0"}]
78-
)
79-
80-
def test_add_empty_purl_result_with_mock_repo(self):
81-
self._assert_purls_written([])
36+
base, purls = get_cargo_packages(packages)
8237

83-
def test_add_invalid_purl_with_mock_repo(self):
84-
# invalid but still written as empty file
85-
self._assert_purls_written([{"purl": "pkg:pypi/django"}])
38+
self.assertEqual(str(base), "pkg:cargo/c5store")
39+
self.assertEqual(purls, expected)

0 commit comments

Comments
 (0)