OLD | NEW |
(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 |
OLD | NEW |