Index: tools/telemetry/third_party/rope/ropetest/contrib/findittest.py |
diff --git a/tools/telemetry/third_party/rope/ropetest/contrib/findittest.py b/tools/telemetry/third_party/rope/ropetest/contrib/findittest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9406a36dbdc388f96ec8d30acf881a1bdc67a509 |
--- /dev/null |
+++ b/tools/telemetry/third_party/rope/ropetest/contrib/findittest.py |
@@ -0,0 +1,123 @@ |
+try: |
+ import unittest2 as unittest |
+except ImportError: |
+ import unittest |
+ |
+from rope.base import exceptions |
+from rope.contrib.findit import (find_occurrences, find_implementations, |
+ find_definition) |
+from ropetest import testutils |
+ |
+ |
+class FindItTest(unittest.TestCase): |
+ |
+ def setUp(self): |
+ super(FindItTest, self).setUp() |
+ self.project = testutils.sample_project() |
+ |
+ def tearDown(self): |
+ testutils.remove_project(self.project) |
+ super(FindItTest, self).tearDown() |
+ |
+ def test_finding_occurrences(self): |
+ mod = testutils.create_module(self.project, 'mod') |
+ mod.write('a_var = 1\n') |
+ result = find_occurrences(self.project, mod, 1) |
+ self.assertEquals(mod, result[0].resource) |
+ self.assertEquals(0, result[0].offset) |
+ self.assertEquals(False, result[0].unsure) |
+ |
+ def test_finding_occurrences_in_more_than_one_module(self): |
+ mod1 = testutils.create_module(self.project, 'mod1') |
+ mod2 = testutils.create_module(self.project, 'mod2') |
+ mod1.write('a_var = 1\n') |
+ mod2.write('import mod1\nmy_var = mod1.a_var') |
+ result = find_occurrences(self.project, mod1, 1) |
+ self.assertEquals(2, len(result)) |
+ modules = (result[0].resource, result[1].resource) |
+ self.assertTrue(mod1 in modules and mod2 in modules) |
+ |
+ def test_finding_occurrences_matching_when_unsure(self): |
+ mod1 = testutils.create_module(self.project, 'mod1') |
+ mod1.write('class C(object):\n def a_func(self):\n pass\n' |
+ 'def f(arg):\n arg.a_func()\n') |
+ result = find_occurrences( |
+ self.project, mod1, mod1.read().index('a_func'), unsure=True) |
+ self.assertEquals(2, len(result)) |
+ |
+ def test_find_occurrences_resources_parameter(self): |
+ mod1 = testutils.create_module(self.project, 'mod1') |
+ mod2 = testutils.create_module(self.project, 'mod2') |
+ mod1.write('a_var = 1\n') |
+ mod2.write('import mod1\nmy_var = mod1.a_var') |
+ result = find_occurrences(self.project, mod1, 1, resources=[mod1]) |
+ self.assertEquals(1, len(result)) |
+ self.assertEquals((mod1, 0), (result[0].resource, result[0].offset)) |
+ |
+ def test_find_occurrences_and_class_hierarchies(self): |
+ mod1 = testutils.create_module(self.project, 'mod1') |
+ mod1.write('class A(object):\n def f():\n pass\n' |
+ 'class B(A):\n def f():\n pass\n') |
+ offset = mod1.read().rindex('f') |
+ result1 = find_occurrences(self.project, mod1, offset) |
+ result2 = find_occurrences(self.project, mod1, |
+ offset, in_hierarchy=True) |
+ self.assertEquals(1, len(result1)) |
+ self.assertEquals(2, len(result2)) |
+ |
+ def test_trivial_find_implementations(self): |
+ mod1 = testutils.create_module(self.project, 'mod1') |
+ mod1.write('class A(object):\n def f(self):\n pass\n') |
+ offset = mod1.read().rindex('f(') |
+ result = find_implementations(self.project, mod1, offset) |
+ self.assertEquals([], result) |
+ |
+ def test_find_implementations_and_not_returning_parents(self): |
+ mod1 = testutils.create_module(self.project, 'mod1') |
+ mod1.write('class A(object):\n def f(self):\n pass\n' |
+ 'class B(A):\n def f(self):\n pass\n') |
+ offset = mod1.read().rindex('f(') |
+ result = find_implementations(self.project, mod1, offset) |
+ self.assertEquals([], result) |
+ |
+ def test_find_implementations_real_implementation(self): |
+ mod1 = testutils.create_module(self.project, 'mod1') |
+ mod1.write('class A(object):\n def f(self):\n pass\n' |
+ 'class B(A):\n def f(self):\n pass\n') |
+ offset = mod1.read().index('f(') |
+ result = find_implementations(self.project, mod1, offset) |
+ self.assertEquals(1, len(result)) |
+ self.assertEquals(mod1.read().rindex('f('), result[0].offset) |
+ |
+ def test_find_implementations_real_implementation_simple(self): |
+ mod1 = testutils.create_module(self.project, 'mod1') |
+ mod1.write('class A(object):\n pass\n') |
+ offset = mod1.read().index('A') |
+ with self.assertRaises(exceptions.BadIdentifierError): |
+ find_implementations(self.project, mod1, offset) |
+ |
+ def test_trivial_find_definition(self): |
+ code = 'def a_func():\n pass\na_func()' |
+ result = find_definition(self.project, code, code.rindex('a_func')) |
+ start = code.index('a_func') |
+ self.assertEquals(start, result.offset) |
+ self.assertEquals(None, result.resource) |
+ self.assertEquals(1, result.lineno) |
+ self.assertEquals((start, start + len('a_func')), result.region) |
+ |
+ def test_find_definition_in_other_modules(self): |
+ mod1 = testutils.create_module(self.project, 'mod1') |
+ mod1.write('var = 1\n') |
+ code = 'import mod1\nprint(mod1.var)\n' |
+ result = find_definition(self.project, code, code.index('var')) |
+ self.assertEquals(mod1, result.resource) |
+ self.assertEquals(0, result.offset) |
+ |
+ |
+def suite(): |
+ result = unittest.TestSuite() |
+ result.addTests(unittest.makeSuite(FindItTest)) |
+ return result |
+ |
+if __name__ == '__main__': |
+ unittest.main() |