summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_enum.py
diff options
context:
space:
mode:
authorAmmar Askar <ammar@ammaraskar.com>2021-04-22 03:22:58 (GMT)
committerGitHub <noreply@github.com>2021-04-22 03:22:58 (GMT)
commit37b173c5231b7b202859af97c17bc3d04b1e4c75 (patch)
tree9d991e7a8b5477702d836426d2a1f9627c9f9e2c /Lib/test/test_enum.py
parentdc516ef8395d15da0ab225eb0dceb2e0581f51ca (diff)
downloadcpython-37b173c5231b7b202859af97c17bc3d04b1e4c75.zip
cpython-37b173c5231b7b202859af97c17bc3d04b1e4c75.tar.gz
cpython-37b173c5231b7b202859af97c17bc3d04b1e4c75.tar.bz2
bpo-38659: Properly re-intialize module variables in test_enum (GH-25516)
Previously TestIntEnumConvert and TestStrEnumConvert would end up converting the module level variables from their regular int form to a `test.test_enum.X` instance after _convert would run. This meant that after a single test ran, the next set of _convert functions would be operating on the enum instances rather than ints. This would cause some tests such as the one involving format to fail when running under a mode that repeatedly runs test such as the refleak finder.
Diffstat (limited to 'Lib/test/test_enum.py')
-rw-r--r--Lib/test/test_enum.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index d946dd5..4f28b80 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -3642,6 +3642,14 @@ CONVERT_STRING_TEST_NAME_E = 5
CONVERT_STRING_TEST_NAME_F = 5
class TestIntEnumConvert(unittest.TestCase):
+ def setUp(self):
+ # Reset the module-level test variables to their original integer
+ # values, otherwise the already created enum values get converted
+ # instead.
+ for suffix in ['A', 'B', 'C', 'D', 'E', 'F']:
+ globals()[f'CONVERT_TEST_NAME_{suffix}'] = 5
+ globals()[f'CONVERT_STRING_TEST_NAME_{suffix}'] = 5
+
def test_convert_value_lookup_priority(self):
test_type = enum.IntEnum._convert_(
'UnittestConvert',
@@ -3688,8 +3696,6 @@ class TestIntEnumConvert(unittest.TestCase):
filter=lambda x: x.startswith('CONVERT_TEST_'))
def test_convert_repr_and_str(self):
- # reset global constants, as previous tests could have converted the
- # integer values to enums
module = ('test.test_enum', '__main__')[__name__=='__main__']
test_type = enum.IntEnum._convert_(
'UnittestConvert',
@@ -3704,6 +3710,11 @@ CONVERT_STR_TEST_2 = 'goodbye'
CONVERT_STR_TEST_1 = 'hello'
class TestStrEnumConvert(unittest.TestCase):
+ def setUp(self):
+ global CONVERT_STR_TEST_1
+ global CONVERT_STR_TEST_2
+ CONVERT_STR_TEST_2 = 'goodbye'
+ CONVERT_STR_TEST_1 = 'hello'
def test_convert(self):
test_type = enum.StrEnum._convert_(