Ticket #8047: 8047_admin_scripts_tests_on_jython.diff

File 8047_admin_scripts_tests_on_jython.diff, 4.0 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, python_path):
     57        """
     58        Returns the command line needed to run a python interpreter, with the specified PYTHONPATH.
     59        """
     60        if sys.platform.startswith('java'):
     61            return "%s -J-Dpython.path=%s" % \
     62                   (sys.executable, python_path)
     63        else:
     64            return "PYTHONPATH=%s %s" % (python_path, sys.executable)
    4965
    5066    def run_test(self, script, args, settings_file=None, apps=None):
    5167        test_dir = os.path.dirname(os.path.dirname(__file__))
    5268        project_dir = os.path.dirname(test_dir)
    5369        base_dir = os.path.dirname(project_dir)
    5470
    55         # Build the command line
    56         cmd = '%s "%s"' % (sys.executable, script)
    57         cmd += ''.join([' %s' % arg for arg in args])
    58 
    5971        # Remember the old environment
    6072        old_django_settings_module = os.environ.get('DJANGO_SETTINGS_MODULE', None)
    61         old_python_path = os.environ.get('PYTHONPATH', None)
    6273        old_cwd = os.getcwd()
    6374
    6475        # Set the test environment
     
    6677            os.environ['DJANGO_SETTINGS_MODULE'] = settings_file
    6778        elif 'DJANGO_SETTINGS_MODULE' in os.environ:
    6879            del os.environ['DJANGO_SETTINGS_MODULE']
     80        python_path = os.pathsep.join([test_dir, base_dir] +  sys.path)
    6981
    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])
     82        # Build the command line
     83        cmd = '%s "%s"' % (self._sys_executable(python_path), script)
     84        cmd += ''.join([' %s' % arg for arg in args])
    7485
    7586        # Move to the test directory and run
    7687        os.chdir(test_dir)
     
    8091        # Restore the old environment
    8192        if old_django_settings_module:
    8293            os.environ['DJANGO_SETTINGS_MODULE'] = old_django_settings_module
    83         if old_python_path:
    84             os.environ['PYTHONPATH'] = old_python_path
    8594
    8695        # Move back to the old working directory
    8796        os.chdir(old_cwd)
     
    823832        out, err = self.run_manage(args)
    824833        self.assertNoOutput(err)
    825834        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)]")
     835        self.assertOutput(out, os.sep.join(['django','contrib','auth','models.py']))
    827836        self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.contenttypes.models'")
    828837        self.assertOutput(out, os.sep.join(['django','contrib','contenttypes','models.py']))
    829838        self.assertOutput(out, "'>, options=[('pythonpath', None), ('settings', None), ('traceback', None)]")
Back to Top