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

Side by Side Diff: tools/telemetry/third_party/rope/ropetest/contrib/findittest.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 rope.contrib.findit import (find_occurrences, find_implementations,
8 find_definition)
9 from ropetest import testutils
10
11
12 class FindItTest(unittest.TestCase):
13
14 def setUp(self):
15 super(FindItTest, self).setUp()
16 self.project = testutils.sample_project()
17
18 def tearDown(self):
19 testutils.remove_project(self.project)
20 super(FindItTest, self).tearDown()
21
22 def test_finding_occurrences(self):
23 mod = testutils.create_module(self.project, 'mod')
24 mod.write('a_var = 1\n')
25 result = find_occurrences(self.project, mod, 1)
26 self.assertEquals(mod, result[0].resource)
27 self.assertEquals(0, result[0].offset)
28 self.assertEquals(False, result[0].unsure)
29
30 def test_finding_occurrences_in_more_than_one_module(self):
31 mod1 = testutils.create_module(self.project, 'mod1')
32 mod2 = testutils.create_module(self.project, 'mod2')
33 mod1.write('a_var = 1\n')
34 mod2.write('import mod1\nmy_var = mod1.a_var')
35 result = find_occurrences(self.project, mod1, 1)
36 self.assertEquals(2, len(result))
37 modules = (result[0].resource, result[1].resource)
38 self.assertTrue(mod1 in modules and mod2 in modules)
39
40 def test_finding_occurrences_matching_when_unsure(self):
41 mod1 = testutils.create_module(self.project, 'mod1')
42 mod1.write('class C(object):\n def a_func(self):\n pass\n'
43 'def f(arg):\n arg.a_func()\n')
44 result = find_occurrences(
45 self.project, mod1, mod1.read().index('a_func'), unsure=True)
46 self.assertEquals(2, len(result))
47
48 def test_find_occurrences_resources_parameter(self):
49 mod1 = testutils.create_module(self.project, 'mod1')
50 mod2 = testutils.create_module(self.project, 'mod2')
51 mod1.write('a_var = 1\n')
52 mod2.write('import mod1\nmy_var = mod1.a_var')
53 result = find_occurrences(self.project, mod1, 1, resources=[mod1])
54 self.assertEquals(1, len(result))
55 self.assertEquals((mod1, 0), (result[0].resource, result[0].offset))
56
57 def test_find_occurrences_and_class_hierarchies(self):
58 mod1 = testutils.create_module(self.project, 'mod1')
59 mod1.write('class A(object):\n def f():\n pass\n'
60 'class B(A):\n def f():\n pass\n')
61 offset = mod1.read().rindex('f')
62 result1 = find_occurrences(self.project, mod1, offset)
63 result2 = find_occurrences(self.project, mod1,
64 offset, in_hierarchy=True)
65 self.assertEquals(1, len(result1))
66 self.assertEquals(2, len(result2))
67
68 def test_trivial_find_implementations(self):
69 mod1 = testutils.create_module(self.project, 'mod1')
70 mod1.write('class A(object):\n def f(self):\n pass\n')
71 offset = mod1.read().rindex('f(')
72 result = find_implementations(self.project, mod1, offset)
73 self.assertEquals([], result)
74
75 def test_find_implementations_and_not_returning_parents(self):
76 mod1 = testutils.create_module(self.project, 'mod1')
77 mod1.write('class A(object):\n def f(self):\n pass\n'
78 'class B(A):\n def f(self):\n pass\n')
79 offset = mod1.read().rindex('f(')
80 result = find_implementations(self.project, mod1, offset)
81 self.assertEquals([], result)
82
83 def test_find_implementations_real_implementation(self):
84 mod1 = testutils.create_module(self.project, 'mod1')
85 mod1.write('class A(object):\n def f(self):\n pass\n'
86 'class B(A):\n def f(self):\n pass\n')
87 offset = mod1.read().index('f(')
88 result = find_implementations(self.project, mod1, offset)
89 self.assertEquals(1, len(result))
90 self.assertEquals(mod1.read().rindex('f('), result[0].offset)
91
92 def test_find_implementations_real_implementation_simple(self):
93 mod1 = testutils.create_module(self.project, 'mod1')
94 mod1.write('class A(object):\n pass\n')
95 offset = mod1.read().index('A')
96 with self.assertRaises(exceptions.BadIdentifierError):
97 find_implementations(self.project, mod1, offset)
98
99 def test_trivial_find_definition(self):
100 code = 'def a_func():\n pass\na_func()'
101 result = find_definition(self.project, code, code.rindex('a_func'))
102 start = code.index('a_func')
103 self.assertEquals(start, result.offset)
104 self.assertEquals(None, result.resource)
105 self.assertEquals(1, result.lineno)
106 self.assertEquals((start, start + len('a_func')), result.region)
107
108 def test_find_definition_in_other_modules(self):
109 mod1 = testutils.create_module(self.project, 'mod1')
110 mod1.write('var = 1\n')
111 code = 'import mod1\nprint(mod1.var)\n'
112 result = find_definition(self.project, code, code.index('var'))
113 self.assertEquals(mod1, result.resource)
114 self.assertEquals(0, result.offset)
115
116
117 def suite():
118 result = unittest.TestSuite()
119 result.addTests(unittest.makeSuite(FindItTest))
120 return result
121
122 if __name__ == '__main__':
123 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698