|
15 | 15 | from minecode_pipelines.pipes.meson import get_meson_packages |
16 | 16 |
|
17 | 17 | DATA_DIR = Path(__file__).parent.parent / "test_data" / "meson" |
| 18 | +EXPECTED_PATH = DATA_DIR / "expected_purls.json" |
18 | 19 |
|
19 | 20 |
|
20 | 21 | class MesonPipeTests(TestCase): |
@@ -53,36 +54,22 @@ def test_get_meson_packages_no_versions_key(self): |
53 | 54 | self.assertEqual(versioned_purls, []) |
54 | 55 |
|
55 | 56 | def test_get_meson_packages_from_releases_json(self): |
56 | | - """Test parsing packages from the test releases.json fixture.""" |
| 57 | + """Test parsing packages from the test releases.json fixture with data-driven expected output.""" |
57 | 58 | releases_path = DATA_DIR / "releases.json" |
58 | 59 | with open(releases_path, encoding="utf-8") as f: |
59 | 60 | releases = json.load(f) |
60 | 61 |
|
61 | | - all_results = [] |
| 62 | + actual = {} |
62 | 63 | for package_name, package_data in releases.items(): |
63 | 64 | if not package_data: |
64 | 65 | continue |
65 | | - all_results.append( |
66 | | - get_meson_packages( |
67 | | - package_name=package_name, |
68 | | - package_data=package_data, |
69 | | - ) |
| 66 | + base_purl, versioned_purls = get_meson_packages( |
| 67 | + package_name=package_name, |
| 68 | + package_data=package_data, |
70 | 69 | ) |
| 70 | + actual[str(base_purl)] = sorted(versioned_purls) |
71 | 71 |
|
72 | | - self.assertEqual(len(all_results), 3) # ogg, zlib, catch2 |
73 | | - |
74 | | - # Check ogg |
75 | | - ogg_base, ogg_purls = all_results[0] |
76 | | - self.assertEqual(str(ogg_base), "pkg:meson/ogg") |
77 | | - self.assertEqual(len(ogg_purls), 4) |
78 | | - |
79 | | - # Check zlib |
80 | | - zlib_base, zlib_purls = all_results[1] |
81 | | - self.assertEqual(str(zlib_base), "pkg:meson/zlib") |
82 | | - self.assertEqual(len(zlib_purls), 3) |
83 | | - |
84 | | - # Check catch2 |
85 | | - catch2_base, catch2_purls = all_results[2] |
86 | | - self.assertEqual(str(catch2_base), "pkg:meson/catch2") |
87 | | - self.assertEqual(len(catch2_purls), 2) |
88 | | - self.assertIn("pkg:meson/catch2@3.5.2-1", catch2_purls) |
| 72 | + with open(EXPECTED_PATH, encoding="utf-8") as ef: |
| 73 | + expected = json.load(ef) |
| 74 | + filtered_actual = {k: actual[k] for k in expected.keys()} |
| 75 | + self.assertEqual(filtered_actual, expected) |
0 commit comments