8
8
from unittest import mock
9
9
from unittest .mock import patch
10
10
11
- global AddonCatalogEntry
12
- global AddonCatalog
13
- global Version
11
+ AddonCatalogEntry = None
12
+ AddonCatalog = None
13
+ Version = None
14
14
15
15
16
16
class TestAddonCatalogEntry (unittest .TestCase ):
17
17
"""Tests for the AddonCatalogEntry class."""
18
18
19
19
def setUp (self ):
20
20
"""Start mock for addonmanager_licenses class."""
21
- global AddonCatalogEntry
22
- global AddonCatalog
23
- global Version
24
21
self .addon_patch = mock .patch .dict ("sys.modules" , {"addonmanager_licenses" : mock .Mock ()})
25
22
self .mock_addon_module = self .addon_patch .start ()
26
23
from AddonCatalog import AddonCatalogEntry , AddonCatalog
27
24
from addonmanager_metadata import Version
28
25
26
+ self .AddonCatalogEntry = AddonCatalogEntry
27
+ self .AddonCatalog = AddonCatalog
28
+ self .Version = Version
29
+
29
30
def tearDown (self ):
30
31
"""Stop patching the addonmanager_licenses class"""
31
32
self .addon_patch .stop ()
@@ -34,28 +35,28 @@ def test_version_match_without_restrictions(self):
34
35
"""Given an AddonCatalogEntry that has no version restrictions, a fixed version matches."""
35
36
with patch ("AddonCatalog.fci.Version" ) as mock_freecad :
36
37
mock_freecad .Version = lambda : (1 , 2 , 3 , "dev" )
37
- ac = AddonCatalogEntry ({})
38
+ ac = self . AddonCatalogEntry ({})
38
39
self .assertTrue (ac .is_compatible ())
39
40
40
41
def test_version_match_with_min_no_max_good_match (self ):
41
42
"""Given an AddonCatalogEntry with a minimum FreeCAD version, a version smaller than that
42
43
does not match."""
43
44
with patch ("AddonCatalog.fci.Version" , return_value = (1 , 2 , 3 , "dev" )):
44
- ac = AddonCatalogEntry ({"freecad_min" : "1.2" })
45
+ ac = self . AddonCatalogEntry ({"freecad_min" : "1.2" })
45
46
self .assertTrue (ac .is_compatible ())
46
47
47
48
def test_version_match_with_max_no_min_good_match (self ):
48
49
"""Given an AddonCatalogEntry with a maximum FreeCAD version, a version larger than that
49
50
does not match."""
50
51
with patch ("AddonCatalog.fci.Version" , return_value = (1 , 2 , 3 , "dev" )):
51
- ac = AddonCatalogEntry ({"freecad_max" : "1.3" })
52
+ ac = self . AddonCatalogEntry ({"freecad_max" : "1.3" })
52
53
self .assertTrue (ac .is_compatible ())
53
54
54
55
def test_version_match_with_min_and_max_good_match (self ):
55
56
"""Given an AddonCatalogEntry with both a minimum and maximum FreeCAD version, a version
56
57
between the two matches."""
57
58
with patch ("AddonCatalog.fci.Version" , return_value = (1 , 2 , 3 , "dev" )):
58
- ac = AddonCatalogEntry (
59
+ ac = self . AddonCatalogEntry (
59
60
{
60
61
"freecad_min" : "1.1" ,
61
62
"freecad_max" : "1.3" ,
@@ -66,7 +67,7 @@ def test_version_match_with_min_and_max_good_match(self):
66
67
def test_version_match_with_min_and_max_bad_match_high (self ):
67
68
"""Given an AddonCatalogEntry with both a minimum and maximum FreeCAD version, a version
68
69
higher than the maximum does not match."""
69
- ac = AddonCatalogEntry (
70
+ ac = self . AddonCatalogEntry (
70
71
{
71
72
"freecad_min" : "1.1" ,
72
73
"freecad_max" : "1.3" ,
@@ -79,7 +80,7 @@ def test_version_match_with_min_and_max_bad_match_low(self):
79
80
"""Given an AddonCatalogEntry with both a minimum and maximum FreeCAD version, a version
80
81
lower than the minimum does not match."""
81
82
with patch ("AddonCatalog.fci.Version" , return_value = (1 , 0 , 3 , "dev" )):
82
- ac = AddonCatalogEntry (
83
+ ac = self . AddonCatalogEntry (
83
84
{
84
85
"freecad_min" : "1.1" ,
85
86
"freecad_max" : "1.3" ,
@@ -93,13 +94,14 @@ class TestAddonCatalog(unittest.TestCase):
93
94
94
95
def setUp (self ):
95
96
"""Start mock for addonmanager_licenses class."""
96
- global AddonCatalog
97
- global Version
98
97
self .addon_patch = mock .patch .dict ("sys.modules" , {"addonmanager_licenses" : mock .Mock ()})
99
98
self .mock_addon_module = self .addon_patch .start ()
100
99
from AddonCatalog import AddonCatalog
101
100
from addonmanager_metadata import Version
102
101
102
+ self .AddonCatalog = AddonCatalog
103
+ self .Version = Version
104
+
103
105
def tearDown (self ):
104
106
"""Stop patching the addonmanager_licenses class"""
105
107
self .addon_patch .stop ()
@@ -108,7 +110,7 @@ def test_single_addon_simple_entry(self):
108
110
"""Test that an addon entry for an addon with only a git ref is accepted and added, and
109
111
appears as an available addon."""
110
112
data = {"AnAddon" : [{"git_ref" : "main" }]}
111
- catalog = AddonCatalog (data )
113
+ catalog = self . AddonCatalog (data )
112
114
ids = catalog .get_available_addon_ids ()
113
115
self .assertEqual (len (ids ), 1 )
114
116
self .assertIn ("AnAddon" , ids )
@@ -128,7 +130,7 @@ def test_single_addon_max_single_entry(self):
128
130
}
129
131
]
130
132
}
131
- catalog = AddonCatalog (data )
133
+ catalog = self . AddonCatalog (data )
132
134
ids = catalog .get_available_addon_ids ()
133
135
self .assertEqual (len (ids ), 1 )
134
136
self .assertIn ("AnAddon" , ids )
@@ -152,7 +154,7 @@ def test_single_addon_multiple_entries(self):
152
154
},
153
155
]
154
156
}
155
- catalog = AddonCatalog (data )
157
+ catalog = self . AddonCatalog (data )
156
158
ids = catalog .get_available_addon_ids ()
157
159
self .assertEqual (len (ids ), 1 )
158
160
self .assertIn ("AnAddon" , ids )
@@ -164,7 +166,7 @@ def test_multiple_addon_entries(self):
164
166
"AnotherAddon" : [{"git_ref" : "main" }],
165
167
"YetAnotherAddon" : [{"git_ref" : "main" }],
166
168
}
167
- catalog = AddonCatalog (data )
169
+ catalog = self . AddonCatalog (data )
168
170
ids = catalog .get_available_addon_ids ()
169
171
self .assertEqual (len (ids ), 3 )
170
172
self .assertIn ("AnAddon" , ids )
@@ -198,14 +200,14 @@ def test_multiple_branches_single_match(self):
198
200
]
199
201
}
200
202
with patch ("addonmanager_freecad_interface.Version" , return_value = (1 , 0 , 3 , "dev" )):
201
- catalog = AddonCatalog (data )
203
+ catalog = self . AddonCatalog (data )
202
204
branches = catalog .get_available_branches ("AnAddon" )
203
205
self .assertEqual (len (branches ), 1 )
204
206
205
207
def test_load_metadata_cache (self ):
206
208
"""Test that an addon with a known hash is correctly loaded (e.g. no exception is raised)"""
207
209
data = {"AnAddon" : [{"git_ref" : "main" }]}
208
- catalog = AddonCatalog (data )
210
+ catalog = self . AddonCatalog (data )
209
211
sha = "cbce6737d7d058dca2b5ae3f2fdb8cc45b0c02bf711e75bdf5f12fb71ce87790"
210
212
cache = {sha : "CacheData" }
211
213
with patch ("addonmanager_freecad_interface.Version" , return_value = cache ):
@@ -219,7 +221,7 @@ def test_documentation_not_added(self):
219
221
"_meta" : {"description" : "Meta" , "schema_version" : "1.0.0" },
220
222
"AnAddon" : [{"git_ref" : "main" }],
221
223
}
222
- catalog = AddonCatalog (data )
224
+ catalog = self . AddonCatalog (data )
223
225
ids = catalog .get_available_addon_ids ()
224
226
self .assertNotIn ("_meta" , ids )
225
227
self .assertNotIn ("$schema" , ids )
0 commit comments