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

Unified Diff: tools/telemetry/third_party/rope/ropetest/refactor/suitestest.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/refactor/suitestest.py
diff --git a/tools/telemetry/third_party/rope/ropetest/refactor/suitestest.py b/tools/telemetry/third_party/rope/ropetest/refactor/suitestest.py
new file mode 100644
index 0000000000000000000000000000000000000000..d9b8b972e11dd25b4c0545ef74d4b4bdc273b086
--- /dev/null
+++ b/tools/telemetry/third_party/rope/ropetest/refactor/suitestest.py
@@ -0,0 +1,139 @@
+import unittest
+
+from rope.base import ast
+from rope.refactor import suites
+
+
+class SuiteTest(unittest.TestCase):
+
+ def setUp(self):
+ super(SuiteTest, self).setUp()
+
+ def tearDown(self):
+ super(SuiteTest, self).tearDown()
+
+ def test_trivial_case(self):
+ root = source_suite_tree('')
+ self.assertEquals(1, root.get_start())
+ self.assertEquals(0, len(root.get_children()))
+
+ def test_simple_ifs(self):
+ root = source_suite_tree('if True:\n pass')
+ self.assertEquals(1, len(root.get_children()))
+
+ def test_simple_else(self):
+ root = source_suite_tree(
+ 'if True:\n pass\nelse:\n pass\n')
+ self.assertEquals(2, len(root.get_children()))
+ self.assertEquals(1, root.get_children()[1].get_start())
+
+ def test_for(self):
+ root = source_suite_tree(
+ '\nfor i in range(10):\n pass\nelse:\n pass\n')
+ self.assertEquals(2, len(root.get_children()))
+ self.assertEquals(2, root.get_children()[1].get_start())
+
+ def test_while(self):
+ root = source_suite_tree(
+ 'while True:\n pass\n')
+ self.assertEquals(1, len(root.get_children()))
+ self.assertEquals(1, root.get_children()[0].get_start())
+
+ def test_with(self):
+ root = source_suite_tree(
+ 'from __future__ import with_statement\nwith file(x): pass\n')
+ self.assertEquals(1, len(root.get_children()))
+ self.assertEquals(2, root.get_children()[0].get_start())
+
+ def test_try_finally(self):
+ root = source_suite_tree(
+ 'try:\n pass\nfinally:\n pass\n')
+ self.assertEquals(2, len(root.get_children()))
+ self.assertEquals(1, root.get_children()[0].get_start())
+
+ def test_try_except(self):
+ root = source_suite_tree(
+ 'try:\n pass\nexcept:\n pass\nelse:\n pass\n')
+ self.assertEquals(3, len(root.get_children()))
+ self.assertEquals(1, root.get_children()[2].get_start())
+
+ def test_try_except_finally(self):
+ root = source_suite_tree(
+ 'try:\n pass\nexcept:\n pass\nfinally:\n pass\n')
+ self.assertEquals(3, len(root.get_children()))
+ self.assertEquals(1, root.get_children()[2].get_start())
+
+ def test_local_start_and_end(self):
+ root = source_suite_tree('if True:\n pass\nelse:\n pass\n')
+ self.assertEquals(1, root.local_start())
+ self.assertEquals(4, root.local_end())
+ if_suite = root.get_children()[0]
+ self.assertEquals(2, if_suite.local_start())
+ self.assertEquals(2, if_suite.local_end())
+ else_suite = root.get_children()[1]
+ self.assertEquals(4, else_suite.local_start())
+ self.assertEquals(4, else_suite.local_end())
+
+ def test_find_suite(self):
+ root = source_suite_tree('\n')
+ self.assertEquals(root, root.find_suite(1))
+
+ def test_find_suite_for_ifs(self):
+ root = source_suite_tree('if True:\n pass\n')
+ if_suite = root.get_children()[0]
+ self.assertEquals(if_suite, root.find_suite(2))
+
+ def test_find_suite_for_between_suites(self):
+ root = source_suite_tree(
+ 'if True:\n pass\nprint(1)\nif True:\n pass\n')
+ if_suite1 = root.get_children()[0]
+ if_suite2 = root.get_children()[1]
+ self.assertEquals(if_suite1, root.find_suite(2))
+ self.assertEquals(if_suite2, root.find_suite(5))
+ self.assertEquals(root, root.find_suite(3))
+
+ def test_simple_find_visible(self):
+ root = source_suite_tree('a = 1\n')
+ self.assertEquals(1, suites.find_visible_for_suite(root, [1]))
+
+ def test_simple_find_visible_ifs(self):
+ root = source_suite_tree('\nif True:\n a = 1\n b = 2\n')
+ self.assertEquals(root.find_suite(3), root.find_suite(4))
+ self.assertEquals(3, suites.find_visible_for_suite(root, [3, 4]))
+
+ def test_simple_find_visible_for_else(self):
+ root = source_suite_tree('\nif True:\n pass\nelse: pass\n')
+ self.assertEquals(2, suites.find_visible_for_suite(root, [2, 4]))
+
+ def test_simple_find_visible_for_different_suites(self):
+ root = source_suite_tree('if True:\n pass\na = 1\n'
+ 'if False:\n pass\n')
+ self.assertEquals(1, suites.find_visible_for_suite(root, [2, 3]))
+ self.assertEquals(5, suites.find_visible_for_suite(root, [5]))
+ self.assertEquals(1, suites.find_visible_for_suite(root, [2, 5]))
+
+ def test_not_always_selecting_scope_start(self):
+ root = source_suite_tree(
+ 'if True:\n a = 1\n if True:\n pass\n'
+ ' else:\n pass\n')
+ self.assertEquals(3, suites.find_visible_for_suite(root, [4, 6]))
+ self.assertEquals(3, suites.find_visible_for_suite(root, [3, 5]))
+ self.assertEquals(3, suites.find_visible_for_suite(root, [4, 5]))
+
+ def test_ignoring_functions(self):
+ root = source_suite_tree(
+ 'def f():\n pass\na = 1\n')
+ self.assertEquals(3, suites.find_visible_for_suite(root, [2, 3]))
+
+ def test_ignoring_classes(self):
+ root = source_suite_tree(
+ 'a = 1\nclass C():\n pass\n')
+ self.assertEquals(1, suites.find_visible_for_suite(root, [1, 3]))
+
+
+def source_suite_tree(source):
+ return suites.ast_suite_tree(ast.parse(source))
+
+
+if __name__ == '__main__':
+ unittest.main()

Powered by Google App Engine
This is Rietveld 408576698