diff options
author | Benjamin Peterson <benjamin@python.org> | 2008-07-16 18:44:47 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2008-07-16 18:44:47 (GMT) |
commit | d613bb4c292635ead23b30af0c9bb83abc81d2be (patch) | |
tree | bd4311430b551da34ea8c1c3986985112abfac48 /Lib/lib2to3/tests | |
parent | d15db693bf6d443c48eb6c71fb79703e5bed3995 (diff) | |
download | cpython-d613bb4c292635ead23b30af0c9bb83abc81d2be.zip cpython-d613bb4c292635ead23b30af0c9bb83abc81d2be.tar.gz cpython-d613bb4c292635ead23b30af0c9bb83abc81d2be.tar.bz2 |
Merged revisions 65019 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
................
r65019 | benjamin.peterson | 2008-07-16 12:01:46 -0500 (Wed, 16 Jul 2008) | 43 lines
Merged revisions 64863,64868,64870,64942,65001-65002,65017-65018 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r64863 | brett.cannon | 2008-07-10 19:42:32 -0500 (Thu, 10 Jul 2008) | 1 line
Add urlparse -> urllib.parse to fix_imports.
........
r64868 | brett.cannon | 2008-07-10 20:00:10 -0500 (Thu, 10 Jul 2008) | 1 line
Add robotparser -> urllib.robotparser to fix_imports.
........
r64870 | brett.cannon | 2008-07-11 00:56:27 -0500 (Fri, 11 Jul 2008) | 6 lines
Fix the fixers for the new dbm package.
Had to create a new fixer (fix_imports2) which did fixes in post-order. This
because ``import anydbm`` was being translated into ``import dbm`` which was
then subsequently changed into ``import dbm.ndbm``; one transform too many.
........
r64942 | collin.winter | 2008-07-13 20:19:05 -0500 (Sun, 13 Jul 2008) | 1 line
Add a comment explaining part of fix_imports.py
........
r65001 | brett.cannon | 2008-07-16 00:11:12 -0500 (Wed, 16 Jul 2008) | 2 lines
Remove some extraneous whitespace.
........
r65002 | brett.cannon | 2008-07-16 00:12:04 -0500 (Wed, 16 Jul 2008) | 4 lines
Implement a fixer for urllib(2).
Thanks Nick Edds for the patch.
........
r65017 | benjamin.peterson | 2008-07-16 11:04:19 -0500 (Wed, 16 Jul 2008) | 1 line
fix 2to3 in Python 2.6
........
r65018 | benjamin.peterson | 2008-07-16 11:55:21 -0500 (Wed, 16 Jul 2008) | 1 line
normalize whitespace
........
................
Diffstat (limited to 'Lib/lib2to3/tests')
-rwxr-xr-x | Lib/lib2to3/tests/test_fixers.py | 96 |
1 files changed, 94 insertions, 2 deletions
diff --git a/Lib/lib2to3/tests/test_fixers.py b/Lib/lib2to3/tests/test_fixers.py index 9079341..117de49 100755 --- a/Lib/lib2to3/tests/test_fixers.py +++ b/Lib/lib2to3/tests/test_fixers.py @@ -11,6 +11,7 @@ except ImportError: # Python imports import unittest from itertools import chain +from operator import itemgetter from os.path import dirname, pathsep # Local imports @@ -28,8 +29,10 @@ class Options: self.verbose = False class FixerTestCase(support.TestCase): - def setUp(self): - options = Options(fix=[self.fixer], print_function=False) + def setUp(self, fix_list=None): + if not fix_list: + fix_list = [self.fixer] + options = Options(fix=fix_list, print_function=False) self.refactor = refactor.RefactoringTool("lib2to3/fixes", options) self.fixer_log = [] self.filename = "<string>" @@ -1494,6 +1497,95 @@ class Test_imports(FixerTestCase): self.check(b, a) +class Test_imports2(Test_imports): + fixer = "imports2" + from ..fixes.fix_imports2 import MAPPING as modules + + +class Test_imports_fixer_order(Test_imports): + + fixer = None + + def setUp(self): + Test_imports.setUp(self, ['imports', 'imports2']) + from ..fixes.fix_imports2 import MAPPING as mapping2 + self.modules = mapping2.copy() + from ..fixes.fix_imports import MAPPING as mapping1 + for key in ('dbhash', 'dumbdbm', 'dbm', 'gdbm'): + self.modules[key] = mapping1[key] + + +class Test_urllib(FixerTestCase): + fixer = "urllib" + from ..fixes.fix_urllib import MAPPING as modules + + def test_import_module(self): + for old, changes in self.modules.items(): + b = "import %s" % old + a = "import %s" % ", ".join(map(itemgetter(0), changes)) + self.check(b, a) + + def test_import_from(self): + for old, changes in self.modules.items(): + all_members = [] + for new, members in changes: + for member in members: + all_members.append(member) + b = "from %s import %s" % (old, member) + a = "from %s import %s" % (new, member) + self.check(b, a) + + s = "from foo import %s" % member + self.unchanged(s) + + b = "from %s import %s" % (old, ", ".join(members)) + a = "from %s import %s" % (new, ", ".join(members)) + self.check(b, a) + + s = "from foo import %s" % ", ".join(members) + self.unchanged(s) + + # test the breaking of a module into multiple replacements + b = "from %s import %s" % (old, ", ".join(all_members)) + a = "\n".join(["from %s import %s" % (new, ", ".join(members)) + for (new, members) in changes]) + self.check(b, a) + + def test_import_module_as(self): + for old in self.modules: + s = "import %s as foo" % old + self.warns_unchanged(s, "This module is now multiple modules") + + def test_import_from_as(self): + for old, changes in self.modules.items(): + for new, members in changes: + for member in members: + b = "from %s import %s as foo_bar" % (old, member) + a = "from %s import %s as foo_bar" % (new, member) + self.check(b, a) + + def test_star(self): + for old in self.modules: + s = "from %s import *" % old + self.warns_unchanged(s, "Cannot handle star imports") + + def test_import_module_usage(self): + for old, changes in self.modules.items(): + for new, members in changes: + for member in members: + b = """ + import %s + foo(%s.%s) + """ % (old, old, member) + a = """ + import %s + foo(%s.%s) + """ % (", ".join([n for (n, mems) + in self.modules[old]]), + new, member) + self.check(b, a) + + class Test_input(FixerTestCase): fixer = "input" |