26
26
from fetchcode .package_util import construct_cocoapods_package
27
27
from fetchcode .package_util import get_cocoapod_tags
28
28
29
+ # Set to True to regenerate expected JSON files.
30
+ REGEN = True
29
31
30
- def file_data (file_name ):
32
+
33
+ def load_json (file_name ):
31
34
with open (file_name ) as file :
32
35
data = file .read ()
33
36
return json .loads (data )
34
37
35
38
36
- def match_data (packages , expected_data ):
39
+ def check_packages (packages , expected_data ):
37
40
data = [dict (p .to_dict ()) for p in packages ]
38
41
expected_data_dict = dict (expected_data )
39
42
expected_data = [dict (expected_data_dict [p ]) for p in expected_data_dict ]
40
43
assert expected_data == data
41
44
42
45
43
- def match_data_list (data_list , expected_data ):
44
- data = sorted (data_list )
45
- expected_data = sorted (expected_data )
46
- assert expected_data == data
47
-
48
-
49
46
@mock .patch ("fetchcode.package.get_response" )
50
47
def test_cargo_packages (mock_get ):
51
- side_effect = [file_data ("tests/data/cargo_mock_data.json" )]
48
+ side_effect = [load_json ("tests/data/cargo_mock_data.json" )]
52
49
purl = "pkg:cargo/rand"
53
- expected_data = file_data ("tests/data/cargo.json" )
50
+ expected_data = load_json ("tests/data/cargo.json" )
54
51
mock_get .side_effect = side_effect
55
52
packages = list (info (purl ))
56
- match_data (packages , expected_data )
53
+ check_packages (packages , expected_data )
57
54
58
55
59
56
@mock .patch ("fetchcode.package.get_response" )
60
57
def test_npm_packages (mock_get ):
61
- side_effect = [file_data ("tests/data/npm_mock_data.json" )]
58
+ side_effect = [load_json ("tests/data/npm_mock_data.json" )]
62
59
purl = "pkg:npm/express"
63
- expected_data = file_data ("tests/data/npm.json" )
60
+ expected_data = load_json ("tests/data/npm.json" )
64
61
mock_get .side_effect = side_effect
65
62
packages = list (info (purl ))
66
- match_data (packages , expected_data )
63
+ check_packages (packages , expected_data )
67
64
68
65
69
66
@mock .patch ("fetchcode.package.get_response" )
70
67
def test_pypi_packages (mock_get ):
71
- side_effect = [file_data ("tests/data/pypi_mock_data.json" )]
68
+ side_effect = [load_json ("tests/data/pypi_mock_data.json" )]
72
69
purl = "pkg:pypi/flask"
73
- expected_data = file_data ("tests/data/pypi.json" )
70
+ expected_data = load_json ("tests/data/pypi.json" )
74
71
mock_get .side_effect = side_effect
75
72
packages = list (info (purl ))
76
- match_data (packages , expected_data )
73
+ check_packages (packages , expected_data )
77
74
78
75
79
76
@mock .patch ("fetchcode.package.get_response" )
80
77
def test_bitbucket_packages (mock_get ):
81
78
side_effect = [
82
- file_data ("tests/data/bitbucket_mock_data.json" ),
83
- file_data ("tests/data/bitbucket_mock_release_data.json" ),
79
+ load_json ("tests/data/bitbucket_mock_data.json" ),
80
+ load_json ("tests/data/bitbucket_mock_release_data.json" ),
84
81
]
85
82
purl = "pkg:bitbucket/litmis/python-itoolkit"
86
- expected_data = file_data ("tests/data/bitbucket.json" )
83
+ expected_data = load_json ("tests/data/bitbucket.json" )
87
84
mock_get .side_effect = side_effect
88
85
packages = list (info (purl ))
89
- match_data (packages , expected_data )
86
+ check_packages (packages , expected_data )
90
87
91
88
92
89
@mock .patch ("fetchcode.package.get_response" )
93
90
def test_rubygems_packages (mock_get ):
94
- side_effect = [file_data ("tests/data/rubygems_mock_data.json" )]
91
+ side_effect = [load_json ("tests/data/rubygems_mock_data.json" )]
95
92
purl = "pkg:rubygems/rubocop"
96
- expected_data = file_data ("tests/data/rubygems.json" )
93
+ expected_data = load_json ("tests/data/rubygems.json" )
97
94
mock_get .side_effect = side_effect
98
95
packages = list (info (purl ))
99
- match_data (packages , expected_data )
96
+ check_packages (packages , expected_data )
100
97
101
98
102
99
@mock .patch ("fetchcode.package.get_response" )
@@ -126,7 +123,7 @@ def test_get_cocoapods_data_from_purl(
126
123
'0.1.1' ,
127
124
'0.1.0' ,
128
125
]
129
- mock_get_github_rest .return_value = file_data ("tests/data/cocoapods/mock_get_github_rest_return_value.json" )
126
+ mock_get_github_rest .return_value = load_json ("tests/data/cocoapods/mock_get_github_rest_return_value.json" )
130
127
mock_get_response .side_effect = file_json ("tests/data/cocoapods/mock_get_response_side_effect.json" )
131
128
expected_result_to_dict = file_json ("tests/data/cocoapods/expected_result_to_dict.json" )
132
129
purl = "pkg:cocoapods/ASNetworking"
@@ -148,17 +145,18 @@ def test_get_cocoapod_tags(mock_get):
148
145
hashed_path_underscore = hashed_path .replace ("/" , "_" )
149
146
file_prefix = "all_pods_versions_"
150
147
spec = f"{ api } /{ file_prefix } { hashed_path_underscore } .txt"
151
- expected_data = ['0.3.0' , '0.2.0' , '0.1.1' , '0.1.0' ]
152
- data_list = get_cocoapod_tags (spec , cocoapods_org_pod_name )
153
- match_data_list (data_list , expected_data )
148
+ expected_tags = ['0.1.0' , '0.1.1' , '0.2.0' , '0.3.0' ]
149
+ tags = get_cocoapod_tags (spec , cocoapods_org_pod_name )
150
+ tags = sorted (tags )
151
+ assert tags == expected_tags
154
152
155
153
156
154
@mock .patch ("fetchcode.package_util.utils.get_response" )
157
155
@mock .patch ("fetchcode.package_util.utils.get_github_rest" )
158
156
def test_construct_cocoapods_package (mock_get_github_rest , mock_get_response ):
159
157
mock_get_github_rest .return_value = "Failed to fetch: https://api.github.com/repos/KevalPatel94/KVLLibraries"
160
- mock_get_response .return_value = file_data ("tests/data/cocoapods/get_response_kvllibraries.json" )
161
- expected_construct_cocoapods_package = file_data ("tests/data/cocoapods/expected_construct_cocoapods_package.json" )
158
+ mock_get_response .return_value = load_json ("tests/data/cocoapods/get_response_kvllibraries.json" )
159
+ expected_construct_cocoapods_package = load_json ("tests/data/cocoapods/expected_construct_cocoapods_package.json" )
162
160
163
161
purl = PackageURL .from_string ("pkg:cocoapods/KVLLibraries" )
164
162
name = "KVLLibraries"
0 commit comments