@@ -25,21 +25,27 @@ def test_all_importers_have_unique_name():
2525
2626
2727@pytest .mark .parametrize (
28- "vcs_url, commit_hash, patch_text, patch_url, expected_result_tuple " ,
28+ "vcs_url, commit_hash, patch_text, patch_url, expected_data_list " ,
2929 [
3030 # SUPPORTED: VCS URL + commit hash + no code patch
3131 (
3232 "https://github.com/user/repo" ,
33- "a1b2c3d4 " ,
33+ "a5f3206663e16c0686739fa83fca2978e6818b6 " ,
3434 None ,
3535 None ,
3636 (
3737 "pkg:github/user/repo" ,
38- PackageCommitPatchData (
39- vcs_url = "https://github.com/user/repo" ,
40- commit_hash = "a1b2c3d4" ,
41- patch_text = None ,
42- ),
38+ [
39+ PackageCommitPatchData (
40+ vcs_url = "https://github.com/user/repo" ,
41+ commit_hash = "a5f3206663e16c0686739fa83fca2978e6818b6" ,
42+ patch_text = None ,
43+ ),
44+ PatchData (
45+ patch_text = None ,
46+ patch_url = "https://github.com/user/repo/tree/a5f3206663e16c0686739fa83fca2978e6818b6" ,
47+ ),
48+ ],
4349 ),
4450 ),
4551 # UNSUPPORTED: VCS URL + commit hash + no code patch
@@ -50,10 +56,12 @@ def test_all_importers_have_unique_name():
5056 None ,
5157 (
5258 None ,
53- PatchData (
54- patch_text = None ,
55- patch_url = "https://unsupported.example.com/repo" ,
56- ),
59+ [
60+ PatchData (
61+ patch_text = None ,
62+ patch_url = "https://unsupported.example.com/repo" ,
63+ )
64+ ],
5765 ),
5866 ),
5967 # SUPPORTED: VCS URL + commit hash + code patch
@@ -64,11 +72,17 @@ def test_all_importers_have_unique_name():
6472 "https://github.com/user/repo/commit/a1b2c3d4" ,
6573 (
6674 "pkg:github/user/repo" ,
67- PackageCommitPatchData (
68- commit_hash = "deadbeef" ,
69- vcs_url = "https://github.com/user/repo" ,
70- patch_text = "diff --git a/file b/file" ,
71- ),
75+ [
76+ PackageCommitPatchData (
77+ commit_hash = "deadbeef" ,
78+ vcs_url = "https://github.com/user/repo" ,
79+ patch_text = "diff --git a/file b/file" ,
80+ ),
81+ PatchData (
82+ patch_text = "diff --git a/file b/file" ,
83+ patch_url = "https://github.com/user/repo/commit/a1b2c3d4" ,
84+ ),
85+ ],
7286 ),
7387 ),
7488 # UNSUPPORTED: VCS URL + commit hash + code patch
@@ -79,10 +93,12 @@ def test_all_importers_have_unique_name():
7993 "https://example.com/user/unknown/commits/a1b2c3d4" ,
8094 (
8195 None ,
82- PatchData (
83- patch_text = "diff content" ,
84- patch_url = "https://example.com/user/unknown/commits/a1b2c3d4" ,
85- ),
96+ [
97+ PatchData (
98+ patch_text = "diff content" ,
99+ patch_url = "https://example.com/user/unknown/commits/a1b2c3d4" ,
100+ )
101+ ],
86102 ),
87103 ),
88104 # NO VCS URL + NO commit hash + code patch
@@ -93,10 +109,12 @@ def test_all_importers_have_unique_name():
93109 "https://example.com/user/unknown/commits/a1b2c3d4" ,
94110 (
95111 None ,
96- PatchData (
97- patch_text = "diff content" ,
98- patch_url = "https://example.com/user/unknown/commits/a1b2c3d4" ,
99- ),
112+ [
113+ PatchData (
114+ patch_text = "diff content" ,
115+ patch_url = "https://example.com/user/unknown/commits/a1b2c3d4" ,
116+ )
117+ ],
100118 ),
101119 ),
102120 # SUPPORTED: VCS URL + NO commit hash + no code patch #invalid
@@ -107,10 +125,12 @@ def test_all_importers_have_unique_name():
107125 None ,
108126 (
109127 None ,
110- PatchData (
111- patch_text = None ,
112- patch_url = "https://github.com/user/repo" ,
113- ),
128+ [
129+ PatchData (
130+ patch_text = None ,
131+ patch_url = "https://github.com/user/repo" ,
132+ )
133+ ],
114134 ),
115135 ),
116136 # UNSUPPORTED: VCS URL + NO commit hash + no code patch #invalid
@@ -121,10 +141,12 @@ def test_all_importers_have_unique_name():
121141 None ,
122142 (
123143 None ,
124- PatchData (
125- patch_text = None ,
126- patch_url = "https://example.com/user/repo" ,
127- ),
144+ [
145+ PatchData (
146+ patch_text = None ,
147+ patch_url = "https://example.com/user/repo" ,
148+ )
149+ ],
128150 ),
129151 ),
130152 # SUPPORTED: VCS URL + NO commit hash + code patch
@@ -135,11 +157,17 @@ def test_all_importers_have_unique_name():
135157 "https://github.com/user/unknown/commit/98e516011d6e096e25247b82fc5f196bbeecff10" ,
136158 (
137159 "pkg:github/user/unknown" ,
138- PackageCommitPatchData (
139- vcs_url = "https://github.com/user/repo" ,
140- commit_hash = "98e516011d6e096e25247b82fc5f196bbeecff10" ,
141- patch_text = None ,
142- ),
160+ [
161+ PackageCommitPatchData (
162+ vcs_url = "https://github.com/user/repo" ,
163+ commit_hash = "98e516011d6e096e25247b82fc5f196bbeecff10" ,
164+ patch_text = None ,
165+ ),
166+ PatchData (
167+ patch_text = None ,
168+ patch_url = "https://github.com/user/unknown/commit/98e516011d6e096e25247b82fc5f196bbeecff10" ,
169+ ),
170+ ],
143171 ),
144172 ),
145173 # UNSUPPORTED: VCS URL + NO commit hash + code patch
@@ -150,32 +178,40 @@ def test_all_importers_have_unique_name():
150178 "https://example.com/user/unknown/commits/98e516011d6e096e25247b82fc5f196bbeecff10.patch" ,
151179 (
152180 None ,
153- PatchData (
154- patch_text = None ,
155- patch_url = "https://example.com/user/unknown/commits/98e516011d6e096e25247b82fc5f196bbeecff10.patch" ,
156- ),
181+ [
182+ PatchData (
183+ patch_text = None ,
184+ patch_url = "https://example.com/user/unknown/commits/98e516011d6e096e25247b82fc5f196bbeecff10.patch" ,
185+ )
186+ ],
157187 ),
158188 ),
159189 ],
160190)
161191def test_classify_patch_source_integration (
162- vcs_url , commit_hash , patch_text , patch_url , expected_result_tuple
192+ vcs_url , commit_hash , patch_text , patch_url , expected_data_list
163193):
164- expected_purl , expected_data_obj = expected_result_tuple
194+ expected_purl , expected_data_objects = expected_data_list
165195
166- actual_purl , actual_data_obj = classify_patch_source (
196+ actual_purl , actual_data_objects = classify_patch_source (
167197 vcs_url = vcs_url , commit_hash = commit_hash , patch_text = patch_text , patch_url = patch_url
168198 )
169199
170- assert isinstance (actual_data_obj , type (expected_data_obj ))
171-
172- if isinstance (actual_data_obj , PackageCommitPatchData ):
173- assert actual_data_obj .vcs_url == expected_data_obj .vcs_url
174- assert actual_data_obj .commit_hash == expected_data_obj .commit_hash
175- assert actual_data_obj .patch_text == expected_data_obj .patch_text
200+ if expected_purl :
176201 assert str (actual_purl ) == expected_purl
177-
178- elif isinstance (actual_data_obj , PatchData ):
179- assert actual_data_obj .patch_url == expected_data_obj .patch_url
180- assert actual_data_obj .patch_text == expected_data_obj .patch_text
202+ else :
181203 assert actual_purl is None
204+
205+ assert len (actual_data_objects ) == len (expected_data_objects )
206+
207+ for actual_data_obj , expected_data_obj in zip (actual_data_objects , expected_data_objects ):
208+ assert isinstance (actual_data_obj , type (expected_data_obj ))
209+
210+ if isinstance (actual_data_obj , PackageCommitPatchData ):
211+ assert actual_data_obj .vcs_url == expected_data_obj .vcs_url
212+ assert actual_data_obj .commit_hash == expected_data_obj .commit_hash
213+ assert actual_data_obj .patch_text == expected_data_obj .patch_text
214+
215+ elif isinstance (actual_data_obj , PatchData ):
216+ assert actual_data_obj .patch_url == expected_data_obj .patch_url
217+ assert actual_data_obj .patch_text == expected_data_obj .patch_text
0 commit comments