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