diff options
author | Batuhan Taşkaya <batuhanosmantaskaya@gmail.com> | 2020-04-22 16:09:03 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-22 16:09:03 (GMT) |
commit | 4454057269b995341b04d13f0bf97f96080f27d0 (patch) | |
tree | fda84a982bce4372ad398afeac039f03b4d29d2c /Lib/test/test_future.py | |
parent | 9b498939009f49b8c772c89e8fc80efbfd8afcb5 (diff) | |
download | cpython-4454057269b995341b04d13f0bf97f96080f27d0.zip cpython-4454057269b995341b04d13f0bf97f96080f27d0.tar.gz cpython-4454057269b995341b04d13f0bf97f96080f27d0.tar.bz2 |
bpo-39562: Prevent collision of future and compiler flags (GH-19230)
The constant values of future flags in the __future__ module
is updated in order to prevent collision with compiler flags.
Previously PyCF_ALLOW_TOP_LEVEL_AWAIT was clashing
with CO_FUTURE_DIVISION.
Diffstat (limited to 'Lib/test/test_future.py')
-rw-r--r-- | Lib/test/test_future.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Lib/test/test_future.py b/Lib/test/test_future.py index fdca231..56b7ac6 100644 --- a/Lib/test/test_future.py +++ b/Lib/test/test_future.py @@ -1,5 +1,7 @@ # Test various flavors of legal and illegal future statements +import __future__ +import ast import unittest from test import support from textwrap import dedent @@ -75,6 +77,21 @@ class FutureTest(unittest.TestCase): from test import badsyntax_future10 self.check_syntax_error(cm.exception, "badsyntax_future10", 3) + def test_ensure_flags_dont_clash(self): + # bpo-39562: test that future flags and compiler flags doesn't clash + + # obtain future flags (CO_FUTURE_***) from the __future__ module + flags = { + f"CO_FUTURE_{future.upper()}": getattr(__future__, future).compiler_flag + for future in __future__.all_feature_names + } + # obtain some of the exported compiler flags (PyCF_***) from the ast module + flags |= { + flag: getattr(ast, flag) + for flag in dir(ast) if flag.startswith("PyCF_") + } + self.assertCountEqual(set(flags.values()), flags.values()) + def test_parserhack(self): # test that the parser.c::future_hack function works as expected # Note: although this test must pass, it's not testing the original |