Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: tools/telemetry/third_party/rope/ropetest/refactor/usefunctiontest.py

Issue 1132103009: Example of refactoring using rope library. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 try:
2 import unittest2 as unittest
3 except ImportError:
4 import unittest
5
6 from rope.base import exceptions
7 from ropetest import testutils
8 from rope.refactor.usefunction import UseFunction
9
10
11 class UseFunctionTest(unittest.TestCase):
12
13 def setUp(self):
14 super(UseFunctionTest, self).setUp()
15 self.project = testutils.sample_project()
16 self.mod1 = testutils.create_module(self.project, 'mod1')
17 self.mod2 = testutils.create_module(self.project, 'mod2')
18
19 def tearDown(self):
20 testutils.remove_project(self.project)
21 super(UseFunctionTest, self).tearDown()
22
23 def test_simple_case(self):
24 code = 'def f():\n pass\n'
25 self.mod1.write(code)
26 user = UseFunction(self.project, self.mod1, code.rindex('f'))
27 self.project.do(user.get_changes())
28 self.assertEquals(code, self.mod1.read())
29
30 def test_simple_function(self):
31 code = 'def f(p):\n print(p)\nprint(1)\n'
32 self.mod1.write(code)
33 user = UseFunction(self.project, self.mod1, code.rindex('f'))
34 self.project.do(user.get_changes())
35 self.assertEquals('def f(p):\n print(p)\nf(1)\n',
36 self.mod1.read())
37
38 def test_simple_function2(self):
39 code = 'def f(p):\n print(p + 1)\nprint(1 + 1)\n'
40 self.mod1.write(code)
41 user = UseFunction(self.project, self.mod1, code.rindex('f'))
42 self.project.do(user.get_changes())
43 self.assertEquals('def f(p):\n print(p + 1)\nf(1)\n',
44 self.mod1.read())
45
46 def test_functions_with_multiple_statements(self):
47 code = 'def f(p):\n r = p + 1\n print(r)\nr = 2 + 1\nprint(r)\n'
48 self.mod1.write(code)
49 user = UseFunction(self.project, self.mod1, code.rindex('f'))
50 self.project.do(user.get_changes())
51 self.assertEquals('def f(p):\n r = p + 1\n print(r)\nf(2)\n',
52 self.mod1.read())
53
54 def test_returning(self):
55 code = 'def f(p):\n return p + 1\nr = 2 + 1\nprint(r)\n'
56 self.mod1.write(code)
57 user = UseFunction(self.project, self.mod1, code.rindex('f'))
58 self.project.do(user.get_changes())
59 self.assertEquals(
60 'def f(p):\n return p + 1\nr = f(2)\nprint(r)\n',
61 self.mod1.read())
62
63 def test_returning_a_single_expression(self):
64 code = 'def f(p):\n return p + 1\nprint(2 + 1)\n'
65 self.mod1.write(code)
66 user = UseFunction(self.project, self.mod1, code.rindex('f'))
67 self.project.do(user.get_changes())
68 self.assertEquals(
69 'def f(p):\n return p + 1\nprint(f(2))\n',
70 self.mod1.read())
71
72 def test_occurrences_in_other_modules(self):
73 code = 'def f(p):\n return p + 1\n'
74 self.mod1.write(code)
75 user = UseFunction(self.project, self.mod1, code.rindex('f'))
76 self.mod2.write('print(2 + 1)\n')
77 self.project.do(user.get_changes())
78 self.assertEquals('import mod1\nprint(mod1.f(2))\n',
79 self.mod2.read())
80
81 def test_when_performing_on_non_functions(self):
82 code = 'var = 1\n'
83 self.mod1.write(code)
84 with self.assertRaises(exceptions.RefactoringError):
85 UseFunction(self.project, self.mod1, code.rindex('var'))
86
87 def test_differing_in_the_inner_temp_names(self):
88 code = 'def f(p):\n a = p + 1\n print(a)\nb = 2 + 1\nprint(b)\n'
89 self.mod1.write(code)
90 user = UseFunction(self.project, self.mod1, code.rindex('f'))
91 self.project.do(user.get_changes())
92 self.assertEquals('def f(p):\n a = p + 1\n print(a)\nf(2)\n',
93 self.mod1.read())
94
95 # TODO: probably new options should be added to restructure
96 def xxx_test_being_a_bit_more_intelligent_when_returning_assigneds(self):
97 code = 'def f(p):\n a = p + 1\n return a\n'\
98 'var = 2 + 1\nprint(var)\n'
99 self.mod1.write(code)
100 user = UseFunction(self.project, self.mod1, code.rindex('f'))
101 self.project.do(user.get_changes())
102 self.assertEquals('def f(p):\n a = p + 1\n return a\n'
103 'var = f(p)\nprint(var)\n', self.mod1.read())
104
105 def test_exception_when_performing_a_function_with_yield(self):
106 code = 'def func():\n yield 1\n'
107 self.mod1.write(code)
108 with self.assertRaises(exceptions.RefactoringError):
109 UseFunction(self.project, self.mod1, code.index('func'))
110
111 def test_exception_when_performing_a_function_two_returns(self):
112 code = 'def func():\n return 1\n return 2\n'
113 self.mod1.write(code)
114 with self.assertRaises(exceptions.RefactoringError):
115 UseFunction(self.project, self.mod1, code.index('func'))
116
117 def test_exception_when_returns_is_not_the_last_statement(self):
118 code = 'def func():\n return 2\n a = 1\n'
119 self.mod1.write(code)
120 with self.assertRaises(exceptions.RefactoringError):
121 UseFunction(self.project, self.mod1, code.index('func'))
122
123
124 if __name__ == '__main__':
125 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698