mirror of https://github.com/python/cpython
Issue #20387: Add test capturing failure to roundtrip indented code in tokenize module.
This commit is contained in:
parent
7cf36387e4
commit
5713b3c5bf
|
@ -1229,6 +1229,22 @@ class UntokenizeTest(TestCase):
|
||||||
self.assertEqual(untokenize(iter(tokens)), b'Hello ')
|
self.assertEqual(untokenize(iter(tokens)), b'Hello ')
|
||||||
|
|
||||||
|
|
||||||
|
class TestRoundtrip(TestCase):
|
||||||
|
def roundtrip(self, code):
|
||||||
|
if isinstance(code, str):
|
||||||
|
code = code.encode('utf-8')
|
||||||
|
return untokenize(tokenize(BytesIO(code).readline))
|
||||||
|
|
||||||
|
def test_indentation_semantics_retained(self):
|
||||||
|
"""
|
||||||
|
Ensure that although whitespace might be mutated in a roundtrip,
|
||||||
|
the semantic meaning of the indentation remains consistent.
|
||||||
|
"""
|
||||||
|
code = "if False:\n\tx=3\n\tx=3\n"
|
||||||
|
codelines = roundtrip(code).split('\n')
|
||||||
|
self.assertEqual(codelines[1], codelines[2])
|
||||||
|
|
||||||
|
|
||||||
__test__ = {"doctests" : doctests, 'decistmt': decistmt}
|
__test__ = {"doctests" : doctests, 'decistmt': decistmt}
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
|
@ -1239,6 +1255,7 @@ def test_main():
|
||||||
support.run_unittest(TestDetectEncoding)
|
support.run_unittest(TestDetectEncoding)
|
||||||
support.run_unittest(TestTokenize)
|
support.run_unittest(TestTokenize)
|
||||||
support.run_unittest(UntokenizeTest)
|
support.run_unittest(UntokenizeTest)
|
||||||
|
support.run_unittest(TestRoundtrip)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
test_main()
|
||||||
|
|
Loading…
Reference in New Issue