OLD | NEW |
(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() |
OLD | NEW |