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

Unified Diff: tools/telemetry/third_party/rope/ropetest/testutils.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/testutils.py
diff --git a/tools/telemetry/third_party/rope/ropetest/testutils.py b/tools/telemetry/third_party/rope/ropetest/testutils.py
new file mode 100644
index 0000000000000000000000000000000000000000..e13421a7e876f844646498c8a7168adf0737e767
--- /dev/null
+++ b/tools/telemetry/third_party/rope/ropetest/testutils.py
@@ -0,0 +1,98 @@
+import os.path
+import shutil
+import sys
+import logging
+logging.basicConfig(format='%(levelname)s:%(funcName)s:%(message)s',
+ level=logging.INFO)
+
+import rope.base.project
+from rope.contrib import generate
+
+
+def sample_project(root=None, foldername=None, **kwds):
+ if root is None:
+ root = 'sample_project'
+ if foldername:
+ root = foldername
+ # HACK: Using ``/dev/shm/`` for faster tests
+ if os.name == 'posix':
+ if os.path.isdir('/dev/shm') and os.access('/dev/shm', os.W_OK):
+ root = '/dev/shm/' + root
+ elif os.path.isdir('/tmp') and os.access('/tmp', os.W_OK):
+ root = '/tmp/' + root
+ logging.debug("Using %s as root of the project.", root)
+ # Using these prefs for faster tests
+ prefs = {'save_objectdb': False, 'save_history': False,
+ 'validate_objectdb': False, 'automatic_soa': False,
+ 'ignored_resources': ['.ropeproject', '*.pyc'],
+ 'import_dynload_stdmods': False}
+ prefs.update(kwds)
+ remove_recursively(root)
+ project = rope.base.project.Project(root, **prefs)
+ return project
+
+create_module = generate.create_module
+create_package = generate.create_package
+
+
+def remove_project(project):
+ project.close()
+ remove_recursively(project.address)
+
+
+def remove_recursively(path):
+ import time
+ # windows sometimes raises exceptions instead of removing files
+ if os.name == 'nt' or sys.platform == 'cygwin':
+ for i in range(12):
+ try:
+ _remove_recursively(path)
+ except OSError as e:
+ if e.errno not in (13, 16, 32):
+ raise
+ time.sleep(0.3)
+ else:
+ break
+ else:
+ _remove_recursively(path)
+
+
+def _remove_recursively(path):
+ if not os.path.exists(path):
+ return
+ if os.path.isfile(path):
+ os.remove(path)
+ else:
+ shutil.rmtree(path)
+
+
+def run_only_for_25(func):
+ """Should be used as a decorator for a unittest.TestCase test method"""
+ if sys.version_info >= (2, 5, 0):
+ return func
+ else:
+ def do_nothing(self):
+ pass
+ return do_nothing
+
+
+def only_for(version):
+ """Should be used as a decorator for a unittest.TestCase test method"""
+ def decorator(func):
+ if sys.version >= version:
+ return func
+ else:
+ def do_nothing(self):
+ pass
+ return do_nothing
+ return decorator
+
+
+def run_only_for_unix(func):
+ """Should be used as a decorator for a unittest.TestCase test method"""
+ if os.name == 'posix':
+ return func
+ else:
+ def do_nothing(self):
+ pass
+ return do_nothing
« no previous file with comments | « tools/telemetry/third_party/rope/ropetest/simplifytest.py ('k') | tools/telemetry/third_party/rope/setup.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698