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

Side by Side Diff: tools/telemetry/third_party/rope/ropetest/contrib/autoimporttest.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 import unittest
2
3 from ropetest import testutils
4 from rope.contrib import autoimport
5
6
7 class AutoImportTest(unittest.TestCase):
8
9 def setUp(self):
10 super(AutoImportTest, self).setUp()
11 self.project = testutils.sample_project(extension_modules=['sys'])
12 self.mod1 = testutils.create_module(self.project, 'mod1')
13 self.pkg = testutils.create_package(self.project, 'pkg')
14 self.mod2 = testutils.create_module(self.project, 'mod2', self.pkg)
15 self.importer = autoimport.AutoImport(self.project, observe=False)
16
17 def tearDown(self):
18 testutils.remove_project(self.project)
19 super(AutoImportTest, self).tearDown()
20
21 def test_simple_case(self):
22 self.assertEquals([], self.importer.import_assist('A'))
23
24 def test_update_resource(self):
25 self.mod1.write('myvar = None\n')
26 self.importer.update_resource(self.mod1)
27 self.assertEquals([('myvar', 'mod1')],
28 self.importer.import_assist('myva'))
29
30 def test_update_module(self):
31 self.mod1.write('myvar = None')
32 self.importer.update_module('mod1')
33 self.assertEquals([('myvar', 'mod1')],
34 self.importer.import_assist('myva'))
35
36 def test_update_non_existent_module(self):
37 self.importer.update_module('does_not_exists_this')
38 self.assertEquals([], self.importer.import_assist('myva'))
39
40 def test_module_with_syntax_errors(self):
41 self.mod1.write('this is a syntax error\n')
42 self.importer.update_resource(self.mod1)
43 self.assertEquals([], self.importer.import_assist('myva'))
44
45 def test_excluding_imported_names(self):
46 self.mod1.write('import pkg\n')
47 self.importer.update_resource(self.mod1)
48 self.assertEquals([], self.importer.import_assist('pkg'))
49
50 def test_get_modules(self):
51 self.mod1.write('myvar = None\n')
52 self.importer.update_resource(self.mod1)
53 self.assertEquals(['mod1'], self.importer.get_modules('myvar'))
54
55 def test_get_modules_inside_packages(self):
56 self.mod1.write('myvar = None\n')
57 self.mod2.write('myvar = None\n')
58 self.importer.update_resource(self.mod1)
59 self.importer.update_resource(self.mod2)
60 self.assertEquals(set(['mod1', 'pkg.mod2']),
61 set(self.importer.get_modules('myvar')))
62
63 def test_trivial_insertion_line(self):
64 result = self.importer.find_insertion_line('')
65 self.assertEquals(1, result)
66
67 def test_insertion_line(self):
68 result = self.importer.find_insertion_line('import mod\n')
69 self.assertEquals(2, result)
70
71 def test_insertion_line_with_pydocs(self):
72 result = self.importer.find_insertion_line(
73 '"""docs\n\ndocs"""\nimport mod\n')
74 self.assertEquals(5, result)
75
76 def test_insertion_line_with_multiple_imports(self):
77 result = self.importer.find_insertion_line(
78 'import mod1\n\nimport mod2\n')
79 self.assertEquals(4, result)
80
81 def test_insertion_line_with_blank_lines(self):
82 result = self.importer.find_insertion_line(
83 'import mod1\n\n# comment\n')
84 self.assertEquals(2, result)
85
86 def test_empty_cache(self):
87 self.mod1.write('myvar = None\n')
88 self.importer.update_resource(self.mod1)
89 self.assertEquals(['mod1'], self.importer.get_modules('myvar'))
90 self.importer.clear_cache()
91 self.assertEquals([], self.importer.get_modules('myvar'))
92
93 def test_not_caching_underlined_names(self):
94 self.mod1.write('_myvar = None\n')
95 self.importer.update_resource(self.mod1, underlined=False)
96 self.assertEquals([], self.importer.get_modules('_myvar'))
97 self.importer.update_resource(self.mod1, underlined=True)
98 self.assertEquals(['mod1'], self.importer.get_modules('_myvar'))
99
100 def test_caching_underlined_names_passing_to_the_constructor(self):
101 importer = autoimport.AutoImport(self.project, False, True)
102 self.mod1.write('_myvar = None\n')
103 importer.update_resource(self.mod1)
104 self.assertEquals(['mod1'], importer.get_modules('_myvar'))
105
106 def test_name_locations(self):
107 self.mod1.write('myvar = None\n')
108 self.importer.update_resource(self.mod1)
109 self.assertEquals([(self.mod1, 1)],
110 self.importer.get_name_locations('myvar'))
111
112 def test_name_locations_with_multiple_occurrences(self):
113 self.mod1.write('myvar = None\n')
114 self.mod2.write('\nmyvar = None\n')
115 self.importer.update_resource(self.mod1)
116 self.importer.update_resource(self.mod2)
117 self.assertEquals(set([(self.mod1, 1), (self.mod2, 2)]),
118 set(self.importer.get_name_locations('myvar')))
119
120 def test_handling_builtin_modules(self):
121 self.importer.update_module('sys')
122 self.assertTrue('sys' in self.importer.get_modules('exit'))
123
124 def test_submodules(self):
125 self.assertEquals(set([self.mod1]),
126 autoimport.submodules(self.mod1))
127 self.assertEquals(set([self.mod2, self.pkg]),
128 autoimport.submodules(self.pkg))
129
130
131 class AutoImportObservingTest(unittest.TestCase):
132
133 def setUp(self):
134 super(AutoImportObservingTest, self).setUp()
135 self.project = testutils.sample_project()
136 self.mod1 = testutils.create_module(self.project, 'mod1')
137 self.pkg = testutils.create_package(self.project, 'pkg')
138 self.mod2 = testutils.create_module(self.project, 'mod2', self.pkg)
139 self.importer = autoimport.AutoImport(self.project, observe=True)
140
141 def tearDown(self):
142 testutils.remove_project(self.project)
143 super(AutoImportObservingTest, self).tearDown()
144
145 def test_writing_files(self):
146 self.mod1.write('myvar = None\n')
147 self.assertEquals(['mod1'], self.importer.get_modules('myvar'))
148
149 def test_moving_files(self):
150 self.mod1.write('myvar = None\n')
151 self.mod1.move('mod3.py')
152 self.assertEquals(['mod3'], self.importer.get_modules('myvar'))
153
154 def test_removing_files(self):
155 self.mod1.write('myvar = None\n')
156 self.mod1.remove()
157 self.assertEquals([], self.importer.get_modules('myvar'))
158
159
160 def suite():
161 result = unittest.TestSuite()
162 result.addTests(unittest.makeSuite(AutoImportTest))
163 result.addTests(unittest.makeSuite(AutoImportObservingTest))
164 return result
165
166 if __name__ == '__main__':
167 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698