diff -r 4fbc3b1ae323 tests/regressiontests/admin_scripts/tests.py
a
|
b
|
|
7 | 7 | import unittest |
8 | 8 | import shutil |
9 | 9 | import sys |
| 10 | import re |
10 | 11 | |
11 | 12 | from django import conf, bin, get_version |
12 | 13 | from django.conf import settings |
… |
… |
|
40 | 41 | def remove_settings(self, filename): |
41 | 42 | test_dir = os.path.dirname(os.path.dirname(__file__)) |
42 | 43 | os.remove(os.path.join(test_dir, filename)) |
43 | | # Also try to remove the pyc file; if it exists, it could |
| 44 | # Also try to remove the compiled file; if it exists, it could |
44 | 45 | # mess up later tests that depend upon the .py file not existing |
45 | | try: |
46 | | os.remove(os.path.join(test_dir, filename + 'c')) |
47 | | except OSError: |
48 | | pass |
| 46 | def try_remove(name): |
| 47 | try: |
| 48 | os.remove(os.path.join(test_dir, name)) |
| 49 | except OSError: |
| 50 | pass |
| 51 | # Remove *.pyc |
| 52 | try_remove(filename + 'c') |
| 53 | # Remove *$py.class (for Jython) |
| 54 | try_remove(re.sub(r'\.py$', '$py.class', filename)) |
| 55 | |
| 56 | def _sys_executable(self): |
| 57 | """ |
| 58 | Returns the command line needed to run a python interpreter, including |
| 59 | the options for setting sys.path on Jython, which doesn't recognizes |
| 60 | PYTHONPATH. |
| 61 | """ |
| 62 | if sys.platform.startswith('java'): |
| 63 | return "%s -J-Dpython.path=%s" % \ |
| 64 | (sys.executable, os.environ['PYTHONPATH']) |
| 65 | else: |
| 66 | return sys.executable |
49 | 67 | |
50 | 68 | def run_test(self, script, args, settings_file=None, apps=None): |
51 | 69 | test_dir = os.path.dirname(os.path.dirname(__file__)) |
52 | 70 | project_dir = os.path.dirname(test_dir) |
53 | 71 | base_dir = os.path.dirname(project_dir) |
54 | | |
55 | | # Build the command line |
56 | | cmd = '%s "%s"' % (sys.executable, script) |
57 | | cmd += ''.join([' %s' % arg for arg in args]) |
58 | 72 | |
59 | 73 | # Remember the old environment |
60 | 74 | old_django_settings_module = os.environ.get('DJANGO_SETTINGS_MODULE', None) |
… |
… |
|
66 | 80 | os.environ['DJANGO_SETTINGS_MODULE'] = settings_file |
67 | 81 | elif 'DJANGO_SETTINGS_MODULE' in os.environ: |
68 | 82 | del os.environ['DJANGO_SETTINGS_MODULE'] |
| 83 | os.environ['PYTHONPATH'] = os.pathsep.join([test_dir, base_dir] + sys.path) |
69 | 84 | |
70 | | if old_python_path: |
71 | | os.environ['PYTHONPATH'] = os.pathsep.join([test_dir, base_dir, old_python_path]) |
72 | | else: |
73 | | os.environ['PYTHONPATH'] = os.pathsep.join([test_dir, base_dir]) |
| 85 | # Build the command line |
| 86 | cmd = '%s "%s"' % (self._sys_executable(), script) |
| 87 | cmd += ''.join([' %s' % arg for arg in args]) |
74 | 88 | |
75 | 89 | # Move to the test directory and run |
76 | 90 | os.chdir(test_dir) |
… |
… |
|
82 | 96 | os.environ['DJANGO_SETTINGS_MODULE'] = old_django_settings_module |
83 | 97 | if old_python_path: |
84 | 98 | os.environ['PYTHONPATH'] = old_python_path |
85 | | |
86 | 99 | # Move back to the old working directory |
87 | 100 | os.chdir(old_cwd) |
88 | 101 | |
… |
… |
|
823 | 836 | out, err = self.run_manage(args) |
824 | 837 | self.assertNoOutput(err) |
825 | 838 | self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.auth.models'") |
826 | | self.assertOutput(out, os.sep.join(['django','contrib','auth','models.pyc']) + "'>, options=[('pythonpath', None), ('settings', None), ('traceback', None)]") |
| 839 | self.assertOutput(out, os.sep.join(['django','contrib','auth','models.py'])) |
827 | 840 | self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.contenttypes.models'") |
828 | 841 | self.assertOutput(out, os.sep.join(['django','contrib','contenttypes','models.py'])) |
829 | 842 | self.assertOutput(out, "'>, options=[('pythonpath', None), ('settings', None), ('traceback', None)]") |