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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 import os.path
2 import shutil
3 import sys
4 import logging
5 logging.basicConfig(format='%(levelname)s:%(funcName)s:%(message)s',
6 level=logging.INFO)
7
8 import rope.base.project
9 from rope.contrib import generate
10
11
12 def sample_project(root=None, foldername=None, **kwds):
13 if root is None:
14 root = 'sample_project'
15 if foldername:
16 root = foldername
17 # HACK: Using ``/dev/shm/`` for faster tests
18 if os.name == 'posix':
19 if os.path.isdir('/dev/shm') and os.access('/dev/shm', os.W_OK):
20 root = '/dev/shm/' + root
21 elif os.path.isdir('/tmp') and os.access('/tmp', os.W_OK):
22 root = '/tmp/' + root
23 logging.debug("Using %s as root of the project.", root)
24 # Using these prefs for faster tests
25 prefs = {'save_objectdb': False, 'save_history': False,
26 'validate_objectdb': False, 'automatic_soa': False,
27 'ignored_resources': ['.ropeproject', '*.pyc'],
28 'import_dynload_stdmods': False}
29 prefs.update(kwds)
30 remove_recursively(root)
31 project = rope.base.project.Project(root, **prefs)
32 return project
33
34 create_module = generate.create_module
35 create_package = generate.create_package
36
37
38 def remove_project(project):
39 project.close()
40 remove_recursively(project.address)
41
42
43 def remove_recursively(path):
44 import time
45 # windows sometimes raises exceptions instead of removing files
46 if os.name == 'nt' or sys.platform == 'cygwin':
47 for i in range(12):
48 try:
49 _remove_recursively(path)
50 except OSError as e:
51 if e.errno not in (13, 16, 32):
52 raise
53 time.sleep(0.3)
54 else:
55 break
56 else:
57 _remove_recursively(path)
58
59
60 def _remove_recursively(path):
61 if not os.path.exists(path):
62 return
63 if os.path.isfile(path):
64 os.remove(path)
65 else:
66 shutil.rmtree(path)
67
68
69 def run_only_for_25(func):
70 """Should be used as a decorator for a unittest.TestCase test method"""
71 if sys.version_info >= (2, 5, 0):
72 return func
73 else:
74 def do_nothing(self):
75 pass
76 return do_nothing
77
78
79 def only_for(version):
80 """Should be used as a decorator for a unittest.TestCase test method"""
81 def decorator(func):
82 if sys.version >= version:
83 return func
84 else:
85 def do_nothing(self):
86 pass
87 return do_nothing
88 return decorator
89
90
91 def run_only_for_unix(func):
92 """Should be used as a decorator for a unittest.TestCase test method"""
93 if os.name == 'posix':
94 return func
95 else:
96 def do_nothing(self):
97 pass
98 return do_nothing
OLDNEW
« 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