annotate elpa/elpy-1.14.1/elpy/tests/test_refactor.py @ 156:c745e2cc79ee

elpy: update along with direct deps
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 27 Feb 2017 12:17:38 -0500
parents elpa/elpy-1.12.0/elpy/tests/test_refactor.py@55ceabc58fcc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
1 import unittest
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
2 import tempfile
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
3 import shutil
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
4 import os
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
5 import mock
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
6 import sys
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
7
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
8 from elpy import refactor
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
9 from textwrap import dedent
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
10
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
11
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
12 class RefactorTestCase(unittest.TestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
13 def setUp(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
14 self.project_root = tempfile.mkdtemp(prefix="test-refactor-root")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
15 self.addCleanup(shutil.rmtree, self.project_root,
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
16 ignore_errors=True)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
17
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
18 def create_file(self, name, contents=""):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
19 filename = os.path.join(self.project_root, name)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
20 contents = dedent(contents)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
21 offset = contents.find("_|_")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
22 if offset > -1:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
23 contents = contents[:offset] + contents[offset + 3:]
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
24 with open(filename, "w") as f:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
25 f.write(contents)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
26 return filename, offset
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
27
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
28 def assertSourceEqual(self, first, second, msg=None):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
29 """Fail if the two objects are unequal, ignoring indentation."""
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
30 self.assertEqual(dedent(first), dedent(second), msg=msg)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
31
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
32
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
33 class TestGetRefactorOptions(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
34 def test_should_only_return_importsmodule_if_not_on_symbol(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
35 filename, offset = self.create_file("foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
36 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
37 import foo
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
38 _|_""")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
39 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
40 options = ref.get_refactor_options(offset)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
41 self.assertTrue(all(opt['category'] in ('Imports',
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
42 'Module')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
43 for opt in options))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
44 filename, offset = self.create_file("foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
45 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
46 _|_
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
47 import foo""")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
48 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
49 options = ref.get_refactor_options(offset)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
50 self.assertTrue(all(opt['category'] in ('Imports',
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
51 'Module')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
52 for opt in options))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
53
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
54 def test_should_return_all_if_on_symbol(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
55 filename, offset = self.create_file("foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
56 "import _|_foo")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
57 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
58 options = ref.get_refactor_options(offset)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
59 self.assertTrue(all(opt['category'] in ('Imports',
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
60 'Method',
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
61 'Module',
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
62 'Symbol')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
63 for opt in options))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
64
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
65 def test_should_return_only_region_if_endoffset(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
66 filename, offset = self.create_file("foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
67 "import foo")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
68 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
69 options = ref.get_refactor_options(offset, 5)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
70 self.assertTrue(all(opt['category'] == 'Region'
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
71 for opt in options))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
72
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
73 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
74 def test_should_treat_from_import_special(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
75 filename, offset = self.create_file("foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
76 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
77 import foo
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
78 _|_""")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
79 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
80 options = ref.get_refactor_options(offset)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
81 self.assertFalse(any(opt['name'] == "refactor_froms_to_imports"
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
82 for opt in options))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
83 filename, offset = self.create_file("foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
84 "imp_|_ort foo")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
85 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
86 options = ref.get_refactor_options(offset)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
87 self.assertTrue(any(opt['name'] == "refactor_froms_to_imports"
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
88 for opt in options))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
89
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
90
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
91 class TestGetChanges(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
92 def test_should_fail_if_method_is_not_refactoring(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
93 filename, offset = self.create_file("foo.py")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
94 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
95 self.assertRaises(ValueError, ref.get_changes, "bad_name")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
96
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
97 def test_should_return_method_results(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
98 filename, offset = self.create_file("foo.py")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
99 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
100 with mock.patch.object(ref, 'refactor_extract_method') as test:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
101 test.return_value = "Meep!"
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
102 self.assertEqual(ref.get_changes("refactor_extract_method",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
103 1, 2),
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
104 "Meep!")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
105 test.assert_called_with(1, 2)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
106
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
107
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
108 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
109 class TestIsOnSymbol(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
110 def test_should_find_symbol(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
111 filename, offset = self.create_file("test.py", "__B_|_AR = 100")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
112 r = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
113 self.assertTrue(r._is_on_symbol(offset))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
114
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
115 # Issue #111
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
116 def test_should_find_symbol_with_underscores(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
117 filename, offset = self.create_file("test.py", "_|___BAR = 100")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
118 r = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
119 self.assertTrue(r._is_on_symbol(offset))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
120
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
121 def test_should_not_find_weird_places(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
122 filename, offset = self.create_file("test.py", "hello = _|_ 1 + 1")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
123 r = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
124 self.assertFalse(r._is_on_symbol(offset))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
125
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
126
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
127 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
128 class TestFromsToImports(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
129 def test_should_refactor(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
130 filename, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
131 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
132 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
133 _|_from datetime import datetime
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
134
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
135 d = datetime(2013, 4, 7)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
136 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
137 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
138 (change,) = ref.get_changes("refactor_froms_to_imports", offset)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
139 self.assertEqual(change['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
140 self.assertEqual(change['file'], filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
141 self.assertSourceEqual(change['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
142 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
143 import datetime
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
144
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
145 d = datetime.datetime(2013, 4, 7)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
146 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
147
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
148
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
149 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
150 class TestOrganizeImports(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
151 def test_should_refactor(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
152 filename, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
153 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
154 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
155 import unittest, base64
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
156 import datetime, json
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
157
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
158 obj = json.dumps(23)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
159 unittest.TestCase()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
160 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
161 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
162 (change,) = ref.get_changes("refactor_organize_imports")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
163 self.assertEqual(change['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
164 self.assertEqual(change['file'], filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
165 self.assertSourceEqual(change['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
166 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
167 import json
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
168 import unittest
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
169
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
170
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
171 obj = json.dumps(23)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
172 unittest.TestCase()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
173 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
174
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
175
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
176 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
177 class TestModuleToPackage(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
178 def test_should_refactor(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
179 filename, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
180 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
181 "_|_import os\n")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
182 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
183 changes = ref.refactor_module_to_package()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
184 a, b, c = changes
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
185 # Not sure why the a change is there. It's a CHANGE that
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
186 # changes nothing...
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
187 self.assertEqual(a['diff'], '')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
188
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
189 self.assertEqual(b['action'], 'create')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
190 self.assertEqual(b['type'], 'directory')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
191 self.assertEqual(b['path'], os.path.join(self.project_root, "foo"))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
192
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
193 self.assertEqual(c['action'], 'move')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
194 self.assertEqual(c['type'], 'file')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
195 self.assertEqual(c['source'], os.path.join(self.project_root,
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
196 "foo.py"))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
197 self.assertEqual(c['destination'], os.path.join(self.project_root,
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
198 "foo/__init__.py"))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
199
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
200
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
201 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
202 class TestRenameAtPoint(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
203 def test_should_refactor(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
204 filename, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
205 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
206 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
207 class Foo(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
208 def _|_foo(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
209 return 5
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
210
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
211 def bar(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
212 return self.foo()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
213 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
214 file2, offset2 = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
215 "bar.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
216 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
217 import foo
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
218
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
219
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
220 x = foo.Foo()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
221 x.foo()""")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
222 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
223 first, second = ref.refactor_rename_at_point(offset, "frob",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
224 in_hierarchy=False,
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
225 docs=False)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
226 if first['file'] == filename:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
227 a, b = first, second
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
228 else:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
229 a, b = second, first
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
230 self.assertEqual(a['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
231 self.assertEqual(a['file'], filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
232 self.assertSourceEqual(a['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
233 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
234 class Foo(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
235 def frob(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
236 return 5
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
237
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
238 def bar(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
239 return self.frob()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
240 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
241 self.assertEqual(b['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
242 self.assertEqual(b['file'], file2)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
243 self.assertSourceEqual(b['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
244 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
245 import foo
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
246
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
247
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
248 x = foo.Foo()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
249 x.frob()""")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
250
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
251 def test_should_refactor_in_hierarchy(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
252 filename, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
253 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
254 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
255 class Foo(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
256 def _|_foo(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
257 return 5
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
258
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
259 def bar(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
260 return self.foo()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
261
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
262 class Bar(Foo):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
263 def foo(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
264 return 42
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
265
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
266 class Baz(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
267 def foo(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
268 return 42
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
269 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
270 file2, offset2 = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
271 "bar.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
272 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
273 import foo
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
274
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
275
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
276 x, y, z = foo.Foo(), foo.Bar(), foo.Baz()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
277 x.foo()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
278 y.foo()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
279 z.foo()""")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
280 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
281 first, second = ref.refactor_rename_at_point(offset, "frob",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
282 in_hierarchy=True,
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
283 docs=False)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
284 if first['file'] == filename:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
285 a, b = first, second
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
286 else:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
287 a, b = second, first
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
288 self.assertEqual(a['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
289 self.assertEqual(a['file'], filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
290 self.assertSourceEqual(a['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
291 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
292 class Foo(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
293 def frob(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
294 return 5
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
295
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
296 def bar(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
297 return self.frob()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
298
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
299 class Bar(Foo):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
300 def frob(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
301 return 42
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
302
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
303 class Baz(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
304 def foo(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
305 return 42
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
306 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
307 self.assertEqual(b['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
308 self.assertEqual(b['file'], file2)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
309 self.assertSourceEqual(b['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
310 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
311 import foo
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
312
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
313
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
314 x, y, z = foo.Foo(), foo.Bar(), foo.Baz()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
315 x.frob()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
316 y.frob()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
317 z.foo()""")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
318
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
319 def test_should_refactor_in_docstrings(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
320 filename, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
321 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
322 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
323 class Foo(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
324 "Frobnicate the foo"
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
325 def _|_foo(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
326 return 5
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
327
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
328 print("I'm an unrelated foo")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
329 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
330 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
331 (change,) = ref.refactor_rename_at_point(offset, "frob",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
332 in_hierarchy=False,
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
333 docs=True)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
334 self.assertEqual(change['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
335 self.assertEqual(change['file'], filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
336 self.assertSourceEqual(change['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
337 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
338 class Foo(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
339 "Frobnicate the frob"
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
340 def frob(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
341 return 5
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
342
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
343 print("I'm an unrelated foo")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
344 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
345
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
346
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
347 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
348 class TestRenameCurrentModule(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
349 def test_should_refactor(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
350 filename, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
351 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
352 "_|_import os\n")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
353 file2, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
354 "bar.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
355 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
356 _|_import foo
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
357 foo.os
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
358 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
359 dest = os.path.join(self.project_root, "frob.py")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
360 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
361 a, b = ref.refactor_rename_current_module("frob")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
362
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
363 self.assertEqual(a['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
364 self.assertEqual(a['file'], file2)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
365 self.assertEqual(a['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
366 "import frob\n"
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
367 "frob.os\n")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
368
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
369 self.assertEqual(b['action'], 'move')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
370 self.assertEqual(b['type'], 'file')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
371 self.assertEqual(b['source'], filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
372 self.assertEqual(b['destination'], dest)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
373
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
374
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
375 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
376 class TestMoveModule(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
377 def test_should_refactor(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
378 filename, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
379 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
380 "_|_import os\n")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
381 file2, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
382 "bar.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
383 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
384 _|_import foo
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
385 foo.os
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
386 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
387 dest = os.path.join(self.project_root, "frob")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
388 os.mkdir(dest)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
389 with open(os.path.join(dest, "__init__.py"), "w") as f:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
390 f.write("")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
391 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
392 a, b = ref.refactor_move_module(dest)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
393
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
394 self.assertEqual(a['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
395 self.assertEqual(a['file'], file2)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
396 self.assertSourceEqual(a['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
397 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
398 import frob.foo
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
399 frob.foo.os
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
400 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
401
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
402 self.assertEqual(b['action'], 'move')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
403 self.assertEqual(b['type'], 'file')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
404 self.assertEqual(b['source'], filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
405 self.assertEqual(b['destination'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
406 os.path.join(dest, "foo.py"))
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
407
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
408
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
409 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
410 class TestCreateInline(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
411 def setUp(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
412 super(TestCreateInline, self).setUp()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
413 self.filename, self.offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
414 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
415 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
416 def add(a, b):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
417 return a + b
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
418
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
419 x = _|_add(2, 3)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
420 y = add(17, 4)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
421 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
422
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
423 def test_should_refactor_single_occurrenc(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
424 ref = refactor.Refactor(self.project_root, self.filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
425 (change,) = ref.refactor_create_inline(self.offset, True)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
426
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
427 self.assertEqual(change['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
428 self.assertEqual(change['file'], self.filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
429 self.assertSourceEqual(change['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
430 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
431 def add(a, b):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
432 return a + b
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
433
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
434 x = 2 + 3
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
435 y = add(17, 4)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
436 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
437
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
438 def test_should_refactor_all_occurrencs(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
439 ref = refactor.Refactor(self.project_root, self.filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
440 (change,) = ref.refactor_create_inline(self.offset, False)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
441
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
442 self.assertEqual(change['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
443 self.assertEqual(change['file'], self.filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
444 self.assertSourceEqual(change['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
445 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
446 x = 2 + 3
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
447 y = 17 + 4
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
448 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
449
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
450
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
451 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
452 class TestExtractMethod(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
453 def setUp(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
454 super(TestExtractMethod, self).setUp()
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
455 self.filename, self.offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
456 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
457 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
458 class Foo(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
459 def spaghetti(self, a, b):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
460 _|_x = a + 5
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
461 y = b + 23
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
462 return y
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
463 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
464
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
465 @unittest.skipIf(sys.version_info >= (3, 5), "Python 3.5 not supported")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
466 def test_should_refactor_local(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
467 ref = refactor.Refactor(self.project_root, self.filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
468 (change,) = ref.refactor_extract_method(self.offset, 104,
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
469 "calc", False)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
470 self.assertEqual(change['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
471 self.assertEqual(change['file'], self.filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
472 expected = """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
473 class Foo(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
474 def spaghetti(self, a, b):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
475 return self.calc(a, b)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
476
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
477 def calc(self, a, b):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
478 x = a + 5
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
479 y = b + 23
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
480 return y
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
481 """
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
482 expected2 = expected.replace("return self.calc(a, b)",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
483 "return self.calc(b, a)")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
484 expected2 = expected2.replace("def calc(self, a, b)",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
485 "def calc(self, b, a)")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
486 # This is silly, but it's what we got.
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
487 if change['contents'] == dedent(expected2):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
488 self.assertSourceEqual(change['contents'], expected2)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
489 else:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
490 self.assertSourceEqual(change['contents'], expected)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
491
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
492 @unittest.skipIf(sys.version_info >= (3, 5), "Python 3.5 not supported")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
493 def test_should_refactor_global(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
494 ref = refactor.Refactor(self.project_root, self.filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
495 (change,) = ref.refactor_extract_method(self.offset, 104,
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
496 "calc", True)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
497 self.assertEqual(change['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
498 self.assertEqual(change['file'], self.filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
499 expected = """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
500 class Foo(object):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
501 def spaghetti(self, a, b):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
502 return calc(a, b)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
503
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
504 def calc(a, b):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
505 x = a + 5
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
506 y = b + 23
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
507 return y
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
508 """
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
509 expected2 = expected.replace("return calc(a, b)",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
510 "return calc(b, a)")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
511 expected2 = expected2.replace("def calc(a, b)",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
512 "def calc(b, a)")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
513 if change['contents'] == dedent(expected2):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
514 self.assertSourceEqual(change['contents'], expected2)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
515 else:
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
516 self.assertSourceEqual(change['contents'], expected)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
517
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
518
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
519 @unittest.skipIf(not refactor.ROPE_AVAILABLE, "Requires Rope")
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
520 class TestUseFunction(RefactorTestCase):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
521 def test_should_refactor(self):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
522 filename, offset = self.create_file(
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
523 "foo.py",
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
524 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
525 def _|_add_and_multiply(a, b, c):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
526 temp = a + b
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
527 return temp * c
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
528
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
529 f = 1 + 2
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
530 g = f * 3
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
531 """)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
532
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
533 ref = refactor.Refactor(self.project_root, filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
534 (change,) = ref.refactor_use_function(offset)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
535
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
536 self.assertEqual(change['action'], 'change')
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
537 self.assertEqual(change['file'], filename)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
538 self.assertSourceEqual(change['contents'],
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
539 """\
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
540 def add_and_multiply(a, b, c):
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
541 temp = a + b
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
542 return temp * c
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
543
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
544 g = add_and_multiply(1, 2, 3)
55ceabc58fcc elpy: upgrade to 1.12
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
545 """)