diff options
Diffstat (limited to 'Lib/lib2to3/tests')
-rw-r--r-- | Lib/lib2to3/tests/data/crlf.py | 3 | ||||
-rw-r--r-- | Lib/lib2to3/tests/data/different_encoding.py | 4 | ||||
-rw-r--r-- | Lib/lib2to3/tests/support.py | 13 | ||||
-rw-r--r-- | Lib/lib2to3/tests/test_all_fixers.py | 2 | ||||
-rw-r--r-- | Lib/lib2to3/tests/test_parser.py | 22 | ||||
-rw-r--r-- | Lib/lib2to3/tests/test_refactor.py | 40 |
6 files changed, 59 insertions, 25 deletions
diff --git a/Lib/lib2to3/tests/data/crlf.py b/Lib/lib2to3/tests/data/crlf.py new file mode 100644 index 0000000..dbe2d7b --- /dev/null +++ b/Lib/lib2to3/tests/data/crlf.py @@ -0,0 +1,3 @@ +print "hi" + +print "Like bad Windows newlines?" diff --git a/Lib/lib2to3/tests/data/different_encoding.py b/Lib/lib2to3/tests/data/different_encoding.py new file mode 100644 index 0000000..4bb82bd --- /dev/null +++ b/Lib/lib2to3/tests/data/different_encoding.py @@ -0,0 +1,4 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-1 -*- +print(u'ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ') + diff --git a/Lib/lib2to3/tests/support.py b/Lib/lib2to3/tests/support.py index 7abf2ef..8b8468c 100644 --- a/Lib/lib2to3/tests/support.py +++ b/Lib/lib2to3/tests/support.py @@ -9,12 +9,9 @@ import os.path import re from textwrap import dedent -#sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) - # Local imports -from .. import pytree -from .. import refactor -from ..pgen2 import driver +from lib2to3 import pytree, refactor +from lib2to3.pgen2 import driver test_dir = os.path.dirname(__file__) proj_dir = os.path.normpath(os.path.join(test_dir, "..")) @@ -25,12 +22,6 @@ driver = driver.Driver(grammar, convert=pytree.convert) def parse_string(string): return driver.parse_string(reformat(string), debug=True) -# Python 2.3's TestSuite is not iter()-able -if sys.version_info < (2, 4): - def TestSuite_iter(self): - return iter(self._tests) - unittest.TestSuite.__iter__ = TestSuite_iter - def run_all_tests(test_mod=None, tests=None): if tests is None: tests = unittest.TestLoader().loadTestsFromModule(test_mod) diff --git a/Lib/lib2to3/tests/test_all_fixers.py b/Lib/lib2to3/tests/test_all_fixers.py index 68d6306..1795ade 100644 --- a/Lib/lib2to3/tests/test_all_fixers.py +++ b/Lib/lib2to3/tests/test_all_fixers.py @@ -28,7 +28,7 @@ class Test_all(support.TestCase): def test_all_project_files(self): for filepath in support.all_project_files(): print("Fixing %s..." % filepath) - self.refactor.refactor_string(open(filepath).read(), filepath) + self.refactor.refactor_file(filepath) if __name__ == "__main__": diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py index 83aa812..2aa737c 100644 --- a/Lib/lib2to3/tests/test_parser.py +++ b/Lib/lib2to3/tests/test_parser.py @@ -14,9 +14,9 @@ from .support import driver, test_dir # Python imports import os -import os.path # Local imports +from lib2to3.pgen2 import tokenize from ..pgen2.parse import ParseError @@ -150,13 +150,25 @@ class TestParserIdempotency(support.TestCase): def test_all_project_files(self): for filepath in support.all_project_files(): print("Parsing %s..." % filepath) - tree = driver.parse_file(filepath, debug=True) - if diff(filepath, tree): + with open(filepath, "rb") as fp: + encoding = tokenize.detect_encoding(fp.readline)[0] + fp.seek(0) + source = fp.read() + if encoding: + source = source.decode(encoding) + tree = driver.parse_string(source) + new = str(tree) + if encoding: + new = new.encode(encoding) + if diff(filepath, new): self.fail("Idempotency failed: %s" % filepath) class TestLiterals(GrammarTest): + def validate(self, s): + driver.parse_string(support.dedent(s) + "\n\n") + def test_multiline_bytes_literals(self): s = """ md5test(b"\xaa" * 80, @@ -185,10 +197,10 @@ class TestLiterals(GrammarTest): self.validate(s) -def diff(fn, tree): +def diff(fn, result): f = open("@", "w") try: - f.write(str(tree)) + f.write(result) finally: f.close() try: diff --git a/Lib/lib2to3/tests/test_refactor.py b/Lib/lib2to3/tests/test_refactor.py index 5a49f01..e55f555 100644 --- a/Lib/lib2to3/tests/test_refactor.py +++ b/Lib/lib2to3/tests/test_refactor.py @@ -14,7 +14,8 @@ from lib2to3 import refactor, pygram, fixer_base from . import support -FIXER_DIR = os.path.join(os.path.dirname(__file__), "data/fixers") +TEST_DATA_DIR = os.path.join(os.path.dirname(__file__), "data") +FIXER_DIR = os.path.join(TEST_DATA_DIR, "fixers") sys.path.append(FIXER_DIR) try: @@ -22,6 +23,8 @@ try: finally: sys.path.pop() +_2TO3_FIXERS = refactor.get_fixers_from_package("lib2to3.fixes") + class TestRefactoringTool(unittest.TestCase): def setUp(self): @@ -121,19 +124,40 @@ class TestRefactoringTool(unittest.TestCase): +def cheese(): pass""".splitlines() self.assertEqual(diff_lines[:-1], expected) + def check_file_refactoring(self, test_file, fixers=_2TO3_FIXERS): + def read_file(): + with open(test_file, "rb") as fp: + return fp.read() + old_contents = read_file() + rt = self.rt(fixers=fixers) + + rt.refactor_file(test_file) + self.assertEqual(old_contents, read_file()) + + try: + rt.refactor_file(test_file, True) + self.assertNotEqual(old_contents, read_file()) + finally: + with open(test_file, "wb") as fp: + fp.write(old_contents) + def test_refactor_file(self): test_file = os.path.join(FIXER_DIR, "parrot_example.py") - old_contents = open(test_file, "r").read() - rt = self.rt() + self.check_file_refactoring(test_file, _DEFAULT_FIXERS) - rt.refactor_file(test_file) - self.assertEqual(old_contents, open(test_file, "r").read()) + def test_file_encoding(self): + fn = os.path.join(TEST_DATA_DIR, "different_encoding.py") + self.check_file_refactoring(fn) - rt.refactor_file(test_file, True) + def test_crlf_newlines(self): + old_sep = os.linesep + os.linesep = "\r\n" try: - self.assertNotEqual(old_contents, open(test_file, "r").read()) + fn = os.path.join(TEST_DATA_DIR, "crlf.py") + fixes = refactor.get_fixers_from_package("lib2to3.fixes") + self.check_file_refactoring(fn, fixes) finally: - open(test_file, "w").write(old_contents) + os.linesep = old_sep def test_refactor_docstring(self): rt = self.rt() |