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

Unified 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 side-by-side diff with in-line comments
Download patch
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()

Powered by Google App Engine
This is Rietveld 408576698