Ticket #8047: 8047_admin_scripts_tests_on_jython.2.diff

File 8047_admin_scripts_tests_on_jython.2.diff, 3.8 KB (added by Leo Soto M., 16 years ago)
  • tests/regressiontests/admin_scripts/tests.py

    diff -r 4fbc3b1ae323 tests/regressiontests/admin_scripts/tests.py
    a b  
    77import unittest
    88import shutil
    99import sys
     10import re
    1011
    1112from django import conf, bin, get_version
    1213from django.conf import settings
     
    4041    def remove_settings(self, filename):
    4142        test_dir = os.path.dirname(os.path.dirname(__file__))
    4243        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
    4445        # 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
    4967
    5068    def run_test(self, script, args, settings_file=None, apps=None):
    5169        test_dir = os.path.dirname(os.path.dirname(__file__))
    5270        project_dir = os.path.dirname(test_dir)
    5371        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])
    5872
    5973        # Remember the old environment
    6074        old_django_settings_module = os.environ.get('DJANGO_SETTINGS_MODULE', None)
     
    6680            os.environ['DJANGO_SETTINGS_MODULE'] = settings_file
    6781        elif 'DJANGO_SETTINGS_MODULE' in os.environ:
    6882            del os.environ['DJANGO_SETTINGS_MODULE']
     83        os.environ['PYTHONPATH'] = os.pathsep.join([test_dir, base_dir] + sys.path)
    6984
    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])
    7488
    7589        # Move to the test directory and run
    7690        os.chdir(test_dir)
     
    8296            os.environ['DJANGO_SETTINGS_MODULE'] = old_django_settings_module
    8397        if old_python_path:
    8498            os.environ['PYTHONPATH'] = old_python_path
    85 
    8699        # Move back to the old working directory
    87100        os.chdir(old_cwd)
    88101
     
    823836        out, err = self.run_manage(args)
    824837        self.assertNoOutput(err)
    825838        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']))
    827840        self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.contenttypes.models'")
    828841        self.assertOutput(out, os.sep.join(['django','contrib','contenttypes','models.py']))
    829842        self.assertOutput(out, "'>, options=[('pythonpath', None), ('settings', None), ('traceback', None)]")
Back to Top