88#
99
1010import json
11- import tempfile
11+
1212from pathlib import Path
13- from unittest import mock
14- from unittest .mock import Mock , patch
13+
1514import 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
2119DATA_DIR = Path (__file__ ).parent .parent / "test_data" / "cargo"
2220
2321
2422class 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