Skip to content

Commit b628831

Browse files
authored
Merge pull request #85 from chennes/eliminateGlobalAtModuleScope
Eliminate global at module scope in test code
2 parents d0e791f + 5e731b2 commit b628831

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

AddonManagerTest/app/test_addoncatalog.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,25 @@
88
from unittest import mock
99
from unittest.mock import patch
1010

11-
global AddonCatalogEntry
12-
global AddonCatalog
13-
global Version
11+
AddonCatalogEntry = None
12+
AddonCatalog = None
13+
Version = None
1414

1515

1616
class TestAddonCatalogEntry(unittest.TestCase):
1717
"""Tests for the AddonCatalogEntry class."""
1818

1919
def setUp(self):
2020
"""Start mock for addonmanager_licenses class."""
21-
global AddonCatalogEntry
22-
global AddonCatalog
23-
global Version
2421
self.addon_patch = mock.patch.dict("sys.modules", {"addonmanager_licenses": mock.Mock()})
2522
self.mock_addon_module = self.addon_patch.start()
2623
from AddonCatalog import AddonCatalogEntry, AddonCatalog
2724
from addonmanager_metadata import Version
2825

26+
self.AddonCatalogEntry = AddonCatalogEntry
27+
self.AddonCatalog = AddonCatalog
28+
self.Version = Version
29+
2930
def tearDown(self):
3031
"""Stop patching the addonmanager_licenses class"""
3132
self.addon_patch.stop()
@@ -34,28 +35,28 @@ def test_version_match_without_restrictions(self):
3435
"""Given an AddonCatalogEntry that has no version restrictions, a fixed version matches."""
3536
with patch("AddonCatalog.fci.Version") as mock_freecad:
3637
mock_freecad.Version = lambda: (1, 2, 3, "dev")
37-
ac = AddonCatalogEntry({})
38+
ac = self.AddonCatalogEntry({})
3839
self.assertTrue(ac.is_compatible())
3940

4041
def test_version_match_with_min_no_max_good_match(self):
4142
"""Given an AddonCatalogEntry with a minimum FreeCAD version, a version smaller than that
4243
does not match."""
4344
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"})
4546
self.assertTrue(ac.is_compatible())
4647

4748
def test_version_match_with_max_no_min_good_match(self):
4849
"""Given an AddonCatalogEntry with a maximum FreeCAD version, a version larger than that
4950
does not match."""
5051
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"})
5253
self.assertTrue(ac.is_compatible())
5354

5455
def test_version_match_with_min_and_max_good_match(self):
5556
"""Given an AddonCatalogEntry with both a minimum and maximum FreeCAD version, a version
5657
between the two matches."""
5758
with patch("AddonCatalog.fci.Version", return_value=(1, 2, 3, "dev")):
58-
ac = AddonCatalogEntry(
59+
ac = self.AddonCatalogEntry(
5960
{
6061
"freecad_min": "1.1",
6162
"freecad_max": "1.3",
@@ -66,7 +67,7 @@ def test_version_match_with_min_and_max_good_match(self):
6667
def test_version_match_with_min_and_max_bad_match_high(self):
6768
"""Given an AddonCatalogEntry with both a minimum and maximum FreeCAD version, a version
6869
higher than the maximum does not match."""
69-
ac = AddonCatalogEntry(
70+
ac = self.AddonCatalogEntry(
7071
{
7172
"freecad_min": "1.1",
7273
"freecad_max": "1.3",
@@ -79,7 +80,7 @@ def test_version_match_with_min_and_max_bad_match_low(self):
7980
"""Given an AddonCatalogEntry with both a minimum and maximum FreeCAD version, a version
8081
lower than the minimum does not match."""
8182
with patch("AddonCatalog.fci.Version", return_value=(1, 0, 3, "dev")):
82-
ac = AddonCatalogEntry(
83+
ac = self.AddonCatalogEntry(
8384
{
8485
"freecad_min": "1.1",
8586
"freecad_max": "1.3",
@@ -93,13 +94,14 @@ class TestAddonCatalog(unittest.TestCase):
9394

9495
def setUp(self):
9596
"""Start mock for addonmanager_licenses class."""
96-
global AddonCatalog
97-
global Version
9897
self.addon_patch = mock.patch.dict("sys.modules", {"addonmanager_licenses": mock.Mock()})
9998
self.mock_addon_module = self.addon_patch.start()
10099
from AddonCatalog import AddonCatalog
101100
from addonmanager_metadata import Version
102101

102+
self.AddonCatalog = AddonCatalog
103+
self.Version = Version
104+
103105
def tearDown(self):
104106
"""Stop patching the addonmanager_licenses class"""
105107
self.addon_patch.stop()
@@ -108,7 +110,7 @@ def test_single_addon_simple_entry(self):
108110
"""Test that an addon entry for an addon with only a git ref is accepted and added, and
109111
appears as an available addon."""
110112
data = {"AnAddon": [{"git_ref": "main"}]}
111-
catalog = AddonCatalog(data)
113+
catalog = self.AddonCatalog(data)
112114
ids = catalog.get_available_addon_ids()
113115
self.assertEqual(len(ids), 1)
114116
self.assertIn("AnAddon", ids)
@@ -128,7 +130,7 @@ def test_single_addon_max_single_entry(self):
128130
}
129131
]
130132
}
131-
catalog = AddonCatalog(data)
133+
catalog = self.AddonCatalog(data)
132134
ids = catalog.get_available_addon_ids()
133135
self.assertEqual(len(ids), 1)
134136
self.assertIn("AnAddon", ids)
@@ -152,7 +154,7 @@ def test_single_addon_multiple_entries(self):
152154
},
153155
]
154156
}
155-
catalog = AddonCatalog(data)
157+
catalog = self.AddonCatalog(data)
156158
ids = catalog.get_available_addon_ids()
157159
self.assertEqual(len(ids), 1)
158160
self.assertIn("AnAddon", ids)
@@ -164,7 +166,7 @@ def test_multiple_addon_entries(self):
164166
"AnotherAddon": [{"git_ref": "main"}],
165167
"YetAnotherAddon": [{"git_ref": "main"}],
166168
}
167-
catalog = AddonCatalog(data)
169+
catalog = self.AddonCatalog(data)
168170
ids = catalog.get_available_addon_ids()
169171
self.assertEqual(len(ids), 3)
170172
self.assertIn("AnAddon", ids)
@@ -198,14 +200,14 @@ def test_multiple_branches_single_match(self):
198200
]
199201
}
200202
with patch("addonmanager_freecad_interface.Version", return_value=(1, 0, 3, "dev")):
201-
catalog = AddonCatalog(data)
203+
catalog = self.AddonCatalog(data)
202204
branches = catalog.get_available_branches("AnAddon")
203205
self.assertEqual(len(branches), 1)
204206

205207
def test_load_metadata_cache(self):
206208
"""Test that an addon with a known hash is correctly loaded (e.g. no exception is raised)"""
207209
data = {"AnAddon": [{"git_ref": "main"}]}
208-
catalog = AddonCatalog(data)
210+
catalog = self.AddonCatalog(data)
209211
sha = "cbce6737d7d058dca2b5ae3f2fdb8cc45b0c02bf711e75bdf5f12fb71ce87790"
210212
cache = {sha: "CacheData"}
211213
with patch("addonmanager_freecad_interface.Version", return_value=cache):
@@ -219,7 +221,7 @@ def test_documentation_not_added(self):
219221
"_meta": {"description": "Meta", "schema_version": "1.0.0"},
220222
"AnAddon": [{"git_ref": "main"}],
221223
}
222-
catalog = AddonCatalog(data)
224+
catalog = self.AddonCatalog(data)
223225
ids = catalog.get_available_addon_ids()
224226
self.assertNotIn("_meta", ids)
225227
self.assertNotIn("$schema", ids)

0 commit comments

Comments
 (0)