Fixed #15372 -- Switched to a startproject default layout that allows us to avoid sys.path hacks.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16964 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Carl Meyer 2011-10-13 05:56:15 +00:00
parent f04af7080b
commit 38f1fe3b35
12 changed files with 237 additions and 143 deletions

View File

@ -1,14 +1,9 @@
#!/usr/bin/env python #!/usr/bin/env python
from django.core.management import execute_manager import os, sys
import imp
try:
imp.find_module('settings') # Assumed to be in the same directory.
except ImportError:
import sys
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
sys.exit(1)
import settings
if __name__ == "__main__": if __name__ == "__main__":
execute_manager(settings) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)

View File

@ -2,6 +2,7 @@ import os
import sys import sys
from optparse import OptionParser, NO_DEFAULT from optparse import OptionParser, NO_DEFAULT
import imp import imp
import warnings
import django import django
from django.core.management.base import BaseCommand, CommandError, handle_default_options from django.core.management.base import BaseCommand, CommandError, handle_default_options
@ -102,14 +103,6 @@ def get_commands():
except (AttributeError, EnvironmentError, ImportError): except (AttributeError, EnvironmentError, ImportError):
apps = [] apps = []
# Find the project directory
try:
from django.conf import settings
module = import_module(settings.SETTINGS_MODULE)
project_directory = setup_environ(module, settings.SETTINGS_MODULE)
except (AttributeError, EnvironmentError, ImportError, KeyError):
project_directory = None
# Find and load the management module for each installed app. # Find and load the management module for each installed app.
for app_name in apps: for app_name in apps:
try: try:
@ -119,17 +112,6 @@ def get_commands():
except ImportError: except ImportError:
pass # No management module - ignore this app pass # No management module - ignore this app
if project_directory:
# Remove the "startproject" command from self.commands, because
# that's a django-admin.py command, not a manage.py command.
del _commands['startproject']
# Override the startapp command so that it always uses the
# project_directory, not the current working directory
# (which is default).
from django.core.management.commands.startapp import ProjectCommand
_commands['startapp'] = ProjectCommand(project_directory)
return _commands return _commands
def call_command(name, *args, **options): def call_command(name, *args, **options):
@ -388,6 +370,13 @@ def setup_environ(settings_mod, original_settings_path=None):
The "original_settings_path" parameter is optional, but recommended, since The "original_settings_path" parameter is optional, but recommended, since
trying to work out the original path from the module can be problematic. trying to work out the original path from the module can be problematic.
""" """
warnings.warn(
"The 'setup_environ' function is deprecated, "
"you likely need to update your 'manage.py'; "
"please see the Django 1.4 release notes "
"(https://docs.djangoproject.com/en/dev/releases/1.4/).",
PendingDeprecationWarning)
# Add this project to sys.path so that it's importable in the conventional # Add this project to sys.path so that it's importable in the conventional
# way. For example, if this file (manage.py) lives in a directory # way. For example, if this file (manage.py) lives in a directory
# "myproject", this code would add "/path/to/myproject" to sys.path. # "myproject", this code would add "/path/to/myproject" to sys.path.
@ -437,6 +426,13 @@ def execute_manager(settings_mod, argv=None):
Like execute_from_command_line(), but for use by manage.py, a Like execute_from_command_line(), but for use by manage.py, a
project-specific django-admin.py utility. project-specific django-admin.py utility.
""" """
warnings.warn(
"The 'execute_manager' function is deprecated, "
"you likely need to update your 'manage.py'; "
"please see the Django 1.4 release notes "
"(https://docs.djangoproject.com/en/dev/releases/1.4/).",
PendingDeprecationWarning)
setup_environ(settings_mod) setup_environ(settings_mod)
utility = ManagementUtility(argv) utility = ManagementUtility(argv)
utility.execute() utility.execute()

View File

@ -15,8 +15,6 @@ class Command(LabelCommand):
can_import_settings = False can_import_settings = False
def handle_label(self, project_name, **options): def handle_label(self, project_name, **options):
# Determine the project_name a bit naively -- by looking at the name of
# the parent directory.
directory = os.getcwd() directory = os.getcwd()
# Check that the project_name cannot be imported. # Check that the project_name cannot be imported.
@ -30,7 +28,7 @@ class Command(LabelCommand):
copy_helper(self.style, 'project', project_name, directory) copy_helper(self.style, 'project', project_name, directory)
# Create a random SECRET_KEY hash, and put it in the main settings. # Create a random SECRET_KEY hash, and put it in the main settings.
main_settings_file = os.path.join(directory, project_name, 'settings.py') main_settings_file = os.path.join(directory, project_name, project_name, 'settings.py')
settings_contents = open(main_settings_file, 'r').read() settings_contents = open(main_settings_file, 'r').read()
fp = open(main_settings_file, 'w') fp = open(main_settings_file, 'w')
secret_key = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)]) secret_key = ''.join([choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)])

View File

@ -246,6 +246,11 @@ these changes.
* The Databrowse contrib module will be removed. * The Databrowse contrib module will be removed.
* The functions :func:`~django.core.management.setup_environ` and
:func:`~django.core.management.execute_manager` will be removed from
:mod:`django.core.management`. This also means that the old (pre-1.4)
style of :file:`manage.py` file will no longer work.
2.0 2.0
--- ---

View File

@ -90,41 +90,58 @@ within your Python installation. Consider symlinking to :doc:`django-admin.py
Let's look at what :djadmin:`startproject` created:: Let's look at what :djadmin:`startproject` created::
mysite/ mysite/
__init__.py
manage.py manage.py
mysite/
__init__.py
settings.py settings.py
urls.py urls.py
.. admonition:: Doesn't match what you see?
The default project layout recently changed. If you're seeing a "flat"
layout (with no inner :file:`mysite/` directory), you're probably using
a version of Django that doesn't match this tutorial version. You'll
want to either switch to the older tutorial or the newer Django version.
These files are: These files are:
* :file:`__init__.py`: An empty file that tells Python that this directory * The outer :file:`mysite/` directory is just a container for your
should be considered a Python package. (Read `more about packages`_ in the project. Its name doesn't matter to Django; you can rename it to anything
official Python docs if you're a Python beginner.) you like.
* :file:`manage.py`: A command-line utility that lets you interact with this * :file:`manage.py`: A command-line utility that lets you interact with this
Django project in various ways. You can read all the details about Django project in various ways. You can read all the details about
:file:`manage.py` in :doc:`/ref/django-admin`. :file:`manage.py` in :doc:`/ref/django-admin`.
* :file:`settings.py`: Settings/configuration for this Django project. * The inner :file:`mysite/` directory is the actual Python package for your
:doc:`/topics/settings` will tell you all about how settings work. project. Its name is the Python package name you'll need to use to import
anything inside it (e.g. ``import mysite.settings``).
* :file:`urls.py`: The URL declarations for this Django project; a "table of * :file:`mysite/__init__.py`: An empty file that tells Python that this
contents" of your Django-powered site. You can read more about URLs in directory should be considered a Python package. (Read `more about
:doc:`/topics/http/urls`. packages`_ in the official Python docs if you're a Python beginner.)
* :file:`mysite/settings.py`: Settings/configuration for this Django
project. :doc:`/topics/settings` will tell you all about how settings
work.
* :file:`mysite/urls.py`: The URL declarations for this Django project; a
"table of contents" of your Django-powered site. You can read more about
URLs in :doc:`/topics/http/urls`.
.. _more about packages: http://docs.python.org/tutorial/modules.html#packages .. _more about packages: http://docs.python.org/tutorial/modules.html#packages
The development server The development server
---------------------- ----------------------
Let's verify this worked. Change into the :file:`mysite` directory, if you Let's verify this worked. Change into the outer :file:`mysite` directory, if
haven't already, and run the command ``python manage.py runserver``. You'll see you haven't already, and run the command ``python manage.py runserver``. You'll
the following output on the command line:: see the following output on the command line::
Validating models... Validating models...
0 errors found. 0 errors found.
Django version 1.0, using settings 'mysite.settings' Django version 1.4, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/ Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C. Quit the server with CONTROL-C.
@ -168,7 +185,7 @@ It worked!
Database setup Database setup
-------------- --------------
Now, edit :file:`settings.py`. It's a normal Python module with Now, edit :file:`mysite/settings.py`. It's a normal Python module with
module-level variables representing Django settings. Change the module-level variables representing Django settings. Change the
following keys in the :setting:`DATABASES` ``'default'`` item to match following keys in the :setting:`DATABASES` ``'default'`` item to match
your databases connection settings. your databases connection settings.
@ -286,10 +303,11 @@ so you can focus on writing code rather than creating directories.
multiple apps. An app can be in multiple projects. multiple apps. An app can be in multiple projects.
Your apps can live anywhere on your `Python path`_. In this tutorial, we'll Your apps can live anywhere on your `Python path`_. In this tutorial, we'll
create our poll app in the :file:`mysite` directory for simplicity. create our poll app right next to your :file:`manage.py` file so that it can be
imported as its own top-level module, rather than a submodule of ``mysite``.
To create your app, make sure you're in the :file:`mysite` directory and type To create your app, make sure you're in the same directory as :file:`manage.py`
this command: and type this command:
.. code-block:: bash .. code-block:: bash
@ -499,27 +517,16 @@ API Django gives you. To invoke the Python shell, use this command:
python manage.py shell python manage.py shell
We're using this instead of simply typing "python", because ``manage.py`` sets We're using this instead of simply typing "python", because :file:`manage.py`
up the project's environment for you. "Setting up the environment" involves two sets the ``DJANGO_SETTINGS_MODULE`` environment variable, which gives Django
things: the Python import path to your :file:`settings.py` file.
* Putting ``polls`` on ``sys.path``. For flexibility, several pieces of
Django refer to projects in Python dotted-path notation (e.g.
``'polls.models'``). In order for this to work, the ``polls``
package has to be on ``sys.path``.
We've already seen one example of this: the :setting:`INSTALLED_APPS`
setting is a list of packages in dotted-path notation.
* Setting the ``DJANGO_SETTINGS_MODULE`` environment variable, which gives
Django the path to your ``settings.py`` file.
.. admonition:: Bypassing manage.py .. admonition:: Bypassing manage.py
If you'd rather not use ``manage.py``, no problem. Just make sure ``mysite`` If you'd rather not use :file:`manage.py`, no problem. Just set the
and ``polls`` are at the root level on the Python path (i.e., ``import mysite`` ``DJANGO_SETTINGS_MODULE`` environment variable to ``mysite.settings`` and
and ``import polls`` work) and set the ``DJANGO_SETTINGS_MODULE`` environment run ``python`` from the same directory :file:`manage.py` is in (or ensure
variable to ``mysite.settings``. that directory is on the Python path, so that ``import mysite`` works).
For more information on all of this, see the :doc:`django-admin.py For more information on all of this, see the :doc:`django-admin.py
documentation </ref/django-admin>`. documentation </ref/django-admin>`.

View File

@ -907,12 +907,6 @@ startproject <projectname>
Creates a Django project directory structure for the given project name in the Creates a Django project directory structure for the given project name in the
current directory. current directory.
This command is disabled when the ``--settings`` option to
``django-admin.py`` is used, or when the environment variable
``DJANGO_SETTINGS_MODULE`` has been set. To re-enable it in these
situations, either omit the ``--settings`` option or unset
``DJANGO_SETTINGS_MODULE``.
syncdb syncdb
------ ------

View File

@ -328,6 +328,73 @@ a :class:`~django.forms.fields.GenericIPAddressField` form field and
the validators :data:`~django.core.validators.validate_ipv46_address` and the validators :data:`~django.core.validators.validate_ipv46_address` and
:data:`~django.core.validators.validate_ipv6_address` :data:`~django.core.validators.validate_ipv6_address`
Updated default project layout and ``manage.py``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Django 1.4 ships with an updated default project layout and ``manage.py`` file
for the :djadmin:`startproject` management command. These fix some issues with
the previous ``manage.py`` handling of Python import paths that caused double
imports, trouble moving from development to deployment, and other
difficult-to-debug path issues.
The previous ``manage.py`` calls functions that are now deprecated, and thus
projects upgrading to Django 1.4 should update their ``manage.py``. (The
old-style ``manage.py`` will continue to work as before until Django 1.6; in
1.5 it will raise ``DeprecationWarning``).
The new recommended ``manage.py`` file should look like this::
#!/usr/bin/env python
import os, sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
``{{ project_name }}`` should be replaced with the Python package name of the
actual project.
If settings, URLconf, and apps within the project are imported or referenced
using the project-name prefix (e.g. ``myproject.settings``, ``ROOT_URLCONF =
``myproject.urls``, etc), the new ``manage.py`` will need to be moved one
directory up, so it is outside the project package rather than adjacent to
``settings.py`` and ``urls.py``.
For instance, with the following layout::
manage.py
mysite/
__init__.py
settings.py
urls.py
myapp/
__init__.py
models.py
You could import ``mysite.settings``, ``mysite.urls``, and ``mysite.myapp``,
but not ``settings``, ``urls``, or ``myapp`` as top-level modules.
Anything imported as a top-level module can be placed adjacent to the new
``manage.py``. For instance, to decouple "myapp" from the project module and
import it as just ``myapp``, place it outside the ``mysite/`` directory::
manage.py
myapp/
__init__.py
models.py
mysite/
__init__.py
settings.py
urls.py
If the same code is imported inconsistently (some places with the project
prefix, some places without it), the imports will need to be cleaned up when
switching to the new ``manage.py``.
Minor features Minor features
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
@ -729,3 +796,26 @@ The code that powers Databrowse is licensed under the same terms as Django
itself, and so is available to be adopted by an individual or group as itself, and so is available to be adopted by an individual or group as
a third-party project. a third-party project.
``django.core.management.setup_environ``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This function temporarily modified ``sys.path`` in order to make the parent
"project" directory importable under the old flat :djadmin:`startproject`
layout. This function is now deprecated, as its path workarounds are no longer
needed with the new ``manage.py`` and default project layout.
This function was never documented or public API, but was widely recommended
for use in setting up a "Django environment" for a user script. These uses
should be replaced by setting the ``DJANGO_SETTINGS_MODULE`` environment
variable or using :func:`django.conf.settings.configure`.
``django.core.management.execute_manager``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This function was previously used by ``manage.py`` to execute a management
command. It is identical to
``django.core.management.execute_from_command_line``, except that it first
calls ``setup_environ``, which is now deprecated. ``execute_manager`` is also
deprecated; ``execute_from_command_line`` can be used instead. (Neither of
these functions is documented public API, but a deprecation path is needed due
to use in existing ``manage.py`` files.)

View File

@ -3,6 +3,8 @@ A series of tests to establish that the command-line managment tools work as
advertised - especially with regards to the handling of the DJANGO_SETTINGS_MODULE advertised - especially with regards to the handling of the DJANGO_SETTINGS_MODULE
and default settings.py files. and default settings.py files.
""" """
from __future__ import with_statement
import os import os
import shutil import shutil
import sys import sys
@ -35,7 +37,7 @@ class AdminScriptTestCase(unittest.TestCase):
settings_file.write("%s = %s\n" % (s, o)) settings_file.write("%s = %s\n" % (s, o))
if apps is None: if apps is None:
apps = ['django.contrib.auth', 'django.contrib.contenttypes', 'admin_scripts'] apps = ['django.contrib.auth', 'django.contrib.contenttypes', 'regressiontests.admin_scripts']
settings_file.write("INSTALLED_APPS = %s\n" % apps) settings_file.write("INSTALLED_APPS = %s\n" % apps)
@ -100,7 +102,7 @@ class AdminScriptTestCase(unittest.TestCase):
os.environ['DJANGO_SETTINGS_MODULE'] = settings_file os.environ['DJANGO_SETTINGS_MODULE'] = settings_file
elif 'DJANGO_SETTINGS_MODULE' in os.environ: elif 'DJANGO_SETTINGS_MODULE' in os.environ:
del os.environ['DJANGO_SETTINGS_MODULE'] del os.environ['DJANGO_SETTINGS_MODULE']
python_path = [test_dir, base_dir] python_path = [project_dir, base_dir]
python_path.extend(ext_backend_base_dirs) python_path.extend(ext_backend_base_dirs)
os.environ[python_path_var_name] = os.pathsep.join(python_path) os.environ[python_path_var_name] = os.pathsep.join(python_path)
@ -148,6 +150,13 @@ class AdminScriptTestCase(unittest.TestCase):
test_manage_py = os.path.join(test_dir, 'manage.py') test_manage_py = os.path.join(test_dir, 'manage.py')
shutil.copyfile(template_manage_py, test_manage_py) shutil.copyfile(template_manage_py, test_manage_py)
with open(test_manage_py, 'r') as fp:
manage_py_contents = fp.read()
manage_py_contents = manage_py_contents.replace(
"{{ project_name }}", "regressiontests")
with open(test_manage_py, 'w') as fp:
fp.write(manage_py_contents)
stdout, stderr = self.run_test('./manage.py', args, settings_file) stdout, stderr = self.run_test('./manage.py', args, settings_file)
# Cleanup - remove the generated manage.py script # Cleanup - remove the generated manage.py script
@ -224,7 +233,7 @@ class DjangoAdminDefaultSettings(AdminScriptTestCase):
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"default: django-admin builtin commands succeed if settings are provided as argument" "default: django-admin builtin commands succeed if settings are provided as argument"
args = ['sqlall','--settings=settings', 'admin_scripts'] args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -232,7 +241,7 @@ class DjangoAdminDefaultSettings(AdminScriptTestCase):
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"default: django-admin builtin commands succeed if settings are provided in the environment" "default: django-admin builtin commands succeed if settings are provided in the environment"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_django_admin(args,'settings') out, err = self.run_django_admin(args,'regressiontests.settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -259,7 +268,7 @@ class DjangoAdminDefaultSettings(AdminScriptTestCase):
def test_custom_command_with_settings(self): def test_custom_command_with_settings(self):
"default: django-admin can execute user commands if settings are provided as argument" "default: django-admin can execute user commands if settings are provided as argument"
args = ['noargs_command', '--settings=settings'] args = ['noargs_command', '--settings=regressiontests.settings']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -267,7 +276,7 @@ class DjangoAdminDefaultSettings(AdminScriptTestCase):
def test_custom_command_with_environment(self): def test_custom_command_with_environment(self):
"default: django-admin can execute user commands if settings are provided in environment" "default: django-admin can execute user commands if settings are provided in environment"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_django_admin(args,'settings') out, err = self.run_django_admin(args,'regressiontests.settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -290,7 +299,7 @@ class DjangoAdminFullPathDefaultSettings(AdminScriptTestCase):
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"fulldefault: django-admin builtin commands succeed if a settings file is provided" "fulldefault: django-admin builtin commands succeed if a settings file is provided"
args = ['sqlall','--settings=settings', 'admin_scripts'] args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -298,7 +307,7 @@ class DjangoAdminFullPathDefaultSettings(AdminScriptTestCase):
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"fulldefault: django-admin builtin commands succeed if the environment contains settings" "fulldefault: django-admin builtin commands succeed if the environment contains settings"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_django_admin(args,'settings') out, err = self.run_django_admin(args,'regressiontests.settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -325,7 +334,7 @@ class DjangoAdminFullPathDefaultSettings(AdminScriptTestCase):
def test_custom_command_with_settings(self): def test_custom_command_with_settings(self):
"fulldefault: django-admin can execute user commands if settings are provided as argument" "fulldefault: django-admin can execute user commands if settings are provided as argument"
args = ['noargs_command', '--settings=settings'] args = ['noargs_command', '--settings=regressiontests.settings']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -333,7 +342,7 @@ class DjangoAdminFullPathDefaultSettings(AdminScriptTestCase):
def test_custom_command_with_environment(self): def test_custom_command_with_environment(self):
"fulldefault: django-admin can execute user commands if settings are provided in environment" "fulldefault: django-admin can execute user commands if settings are provided in environment"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_django_admin(args,'settings') out, err = self.run_django_admin(args,'regressiontests.settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -356,7 +365,7 @@ class DjangoAdminMinimalSettings(AdminScriptTestCase):
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"minimal: django-admin builtin commands fail if settings are provided as argument" "minimal: django-admin builtin commands fail if settings are provided as argument"
args = ['sqlall','--settings=settings', 'admin_scripts'] args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, 'App with label admin_scripts could not be found') self.assertOutput(err, 'App with label admin_scripts could not be found')
@ -364,7 +373,7 @@ class DjangoAdminMinimalSettings(AdminScriptTestCase):
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"minimal: django-admin builtin commands fail if settings are provided in the environment" "minimal: django-admin builtin commands fail if settings are provided in the environment"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_django_admin(args,'settings') out, err = self.run_django_admin(args,'regressiontests.settings')
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, 'App with label admin_scripts could not be found') self.assertOutput(err, 'App with label admin_scripts could not be found')
@ -391,7 +400,7 @@ class DjangoAdminMinimalSettings(AdminScriptTestCase):
def test_custom_command_with_settings(self): def test_custom_command_with_settings(self):
"minimal: django-admin can't execute user commands, even if settings are provided as argument" "minimal: django-admin can't execute user commands, even if settings are provided as argument"
args = ['noargs_command', '--settings=settings'] args = ['noargs_command', '--settings=regressiontests.settings']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Unknown command: 'noargs_command'") self.assertOutput(err, "Unknown command: 'noargs_command'")
@ -399,7 +408,7 @@ class DjangoAdminMinimalSettings(AdminScriptTestCase):
def test_custom_command_with_environment(self): def test_custom_command_with_environment(self):
"minimal: django-admin can't execute user commands, even if settings are provided in environment" "minimal: django-admin can't execute user commands, even if settings are provided in environment"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_django_admin(args,'settings') out, err = self.run_django_admin(args,'regressiontests.settings')
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Unknown command: 'noargs_command'") self.assertOutput(err, "Unknown command: 'noargs_command'")
@ -422,7 +431,7 @@ class DjangoAdminAlternateSettings(AdminScriptTestCase):
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"alternate: django-admin builtin commands succeed if settings are provided as argument" "alternate: django-admin builtin commands succeed if settings are provided as argument"
args = ['sqlall','--settings=alternate_settings', 'admin_scripts'] args = ['sqlall','--settings=regressiontests.alternate_settings', 'admin_scripts']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -430,7 +439,7 @@ class DjangoAdminAlternateSettings(AdminScriptTestCase):
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"alternate: django-admin builtin commands succeed if settings are provided in the environment" "alternate: django-admin builtin commands succeed if settings are provided in the environment"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_django_admin(args,'alternate_settings') out, err = self.run_django_admin(args,'regressiontests.alternate_settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -457,7 +466,7 @@ class DjangoAdminAlternateSettings(AdminScriptTestCase):
def test_custom_command_with_settings(self): def test_custom_command_with_settings(self):
"alternate: django-admin can execute user commands if settings are provided as argument" "alternate: django-admin can execute user commands if settings are provided as argument"
args = ['noargs_command', '--settings=alternate_settings'] args = ['noargs_command', '--settings=regressiontests.alternate_settings']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -465,7 +474,7 @@ class DjangoAdminAlternateSettings(AdminScriptTestCase):
def test_custom_command_with_environment(self): def test_custom_command_with_environment(self):
"alternate: django-admin can execute user commands if settings are provided in environment" "alternate: django-admin can execute user commands if settings are provided in environment"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_django_admin(args,'alternate_settings') out, err = self.run_django_admin(args,'regressiontests.alternate_settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -493,7 +502,7 @@ class DjangoAdminMultipleSettings(AdminScriptTestCase):
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"alternate: django-admin builtin commands succeed if settings are provided as argument" "alternate: django-admin builtin commands succeed if settings are provided as argument"
args = ['sqlall','--settings=alternate_settings', 'admin_scripts'] args = ['sqlall','--settings=regressiontests.alternate_settings', 'admin_scripts']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -501,7 +510,7 @@ class DjangoAdminMultipleSettings(AdminScriptTestCase):
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"alternate: django-admin builtin commands succeed if settings are provided in the environment" "alternate: django-admin builtin commands succeed if settings are provided in the environment"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_django_admin(args,'alternate_settings') out, err = self.run_django_admin(args,'regressiontests.alternate_settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -526,16 +535,16 @@ class DjangoAdminMultipleSettings(AdminScriptTestCase):
self.assertOutput(err, "Unknown command: 'noargs_command'") self.assertOutput(err, "Unknown command: 'noargs_command'")
def test_custom_command_with_settings(self): def test_custom_command_with_settings(self):
"alternate: django-admin can't execute user commands, even if settings are provided as argument" "alternate: django-admin can execute user commands if settings are provided as argument"
args = ['noargs_command', '--settings=alternate_settings'] args = ['noargs_command', '--settings=regressiontests.alternate_settings']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
def test_custom_command_with_environment(self): def test_custom_command_with_environment(self):
"alternate: django-admin can't execute user commands, even if settings are provided in environment" "alternate: django-admin can execute user commands if settings are provided in environment"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_django_admin(args,'alternate_settings') out, err = self.run_django_admin(args,'regressiontests.alternate_settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -557,7 +566,7 @@ class DjangoAdminSettingsDirectory(AdminScriptTestCase):
test_dir = os.path.dirname(os.path.dirname(__file__)) test_dir = os.path.dirname(os.path.dirname(__file__))
args = ['startapp','settings_test'] args = ['startapp','settings_test']
app_path = os.path.join(test_dir, 'settings_test') app_path = os.path.join(test_dir, 'settings_test')
out, err = self.run_django_admin(args,'settings') out, err = self.run_django_admin(args,'regressiontests.settings')
self.addCleanup(shutil.rmtree, app_path) self.addCleanup(shutil.rmtree, app_path)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertTrue(os.path.exists(app_path)) self.assertTrue(os.path.exists(app_path))
@ -591,7 +600,7 @@ class DjangoAdminSettingsDirectory(AdminScriptTestCase):
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"directory: django-admin builtin commands succeed if settings are provided as argument" "directory: django-admin builtin commands succeed if settings are provided as argument"
args = ['sqlall','--settings=settings', 'admin_scripts'] args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -599,7 +608,7 @@ class DjangoAdminSettingsDirectory(AdminScriptTestCase):
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"directory: django-admin builtin commands succeed if settings are provided in the environment" "directory: django-admin builtin commands succeed if settings are provided in the environment"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_django_admin(args,'settings') out, err = self.run_django_admin(args,'regressiontests.settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -618,21 +627,21 @@ class ManageNoSettings(AdminScriptTestCase):
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertOutput(err, "Could not import settings 'regressiontests.settings'")
def test_builtin_with_bad_settings(self): def test_builtin_with_bad_settings(self):
"no settings: manage.py builtin commands fail if settings file (from argument) doesn't exist" "no settings: manage.py builtin commands fail if settings file (from argument) doesn't exist"
args = ['sqlall','--settings=bad_settings', 'admin_scripts'] args = ['sqlall','--settings=bad_settings', 'admin_scripts']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertOutput(err, "Could not import settings 'bad_settings'")
def test_builtin_with_bad_environment(self): def test_builtin_with_bad_environment(self):
"no settings: manage.py builtin commands fail if settings file (from environment) doesn't exist" "no settings: manage.py builtin commands fail if settings file (from environment) doesn't exist"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_manage(args,'bad_settings') out, err = self.run_manage(args,'bad_settings')
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertOutput(err, "Could not import settings 'bad_settings'")
class ManageDefaultSettings(AdminScriptTestCase): class ManageDefaultSettings(AdminScriptTestCase):
@ -654,7 +663,7 @@ class ManageDefaultSettings(AdminScriptTestCase):
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"default: manage.py builtin commands succeed if settings are provided as argument" "default: manage.py builtin commands succeed if settings are provided as argument"
args = ['sqlall','--settings=settings', 'admin_scripts'] args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -662,7 +671,7 @@ class ManageDefaultSettings(AdminScriptTestCase):
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"default: manage.py builtin commands succeed if settings are provided in the environment" "default: manage.py builtin commands succeed if settings are provided in the environment"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_manage(args,'settings') out, err = self.run_manage(args,'regressiontests.settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -689,7 +698,7 @@ class ManageDefaultSettings(AdminScriptTestCase):
def test_custom_command_with_settings(self): def test_custom_command_with_settings(self):
"default: manage.py can execute user commands when settings are provided as argument" "default: manage.py can execute user commands when settings are provided as argument"
args = ['noargs_command', '--settings=settings'] args = ['noargs_command', '--settings=regressiontests.settings']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -697,7 +706,7 @@ class ManageDefaultSettings(AdminScriptTestCase):
def test_custom_command_with_environment(self): def test_custom_command_with_environment(self):
"default: manage.py can execute user commands when settings are provided in environment" "default: manage.py can execute user commands when settings are provided in environment"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_manage(args,'settings') out, err = self.run_manage(args,'regressiontests.settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -721,7 +730,7 @@ class ManageFullPathDefaultSettings(AdminScriptTestCase):
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"fulldefault: manage.py builtin commands succeed if settings are provided as argument" "fulldefault: manage.py builtin commands succeed if settings are provided as argument"
args = ['sqlall','--settings=settings', 'admin_scripts'] args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -729,7 +738,7 @@ class ManageFullPathDefaultSettings(AdminScriptTestCase):
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"fulldefault: manage.py builtin commands succeed if settings are provided in the environment" "fulldefault: manage.py builtin commands succeed if settings are provided in the environment"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_manage(args,'settings') out, err = self.run_manage(args,'regressiontests.settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'CREATE TABLE') self.assertOutput(out, 'CREATE TABLE')
@ -756,7 +765,7 @@ class ManageFullPathDefaultSettings(AdminScriptTestCase):
def test_custom_command_with_settings(self): def test_custom_command_with_settings(self):
"fulldefault: manage.py can execute user commands when settings are provided as argument" "fulldefault: manage.py can execute user commands when settings are provided as argument"
args = ['noargs_command', '--settings=settings'] args = ['noargs_command', '--settings=regressiontests.settings']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -764,7 +773,7 @@ class ManageFullPathDefaultSettings(AdminScriptTestCase):
def test_custom_command_with_environment(self): def test_custom_command_with_environment(self):
"fulldefault: manage.py can execute user commands when settings are provided in environment" "fulldefault: manage.py can execute user commands when settings are provided in environment"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_manage(args,'settings') out, err = self.run_manage(args,'regressiontests.settings')
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, "EXECUTE:NoArgsCommand") self.assertOutput(out, "EXECUTE:NoArgsCommand")
@ -787,7 +796,7 @@ class ManageMinimalSettings(AdminScriptTestCase):
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"minimal: manage.py builtin commands fail if settings are provided as argument" "minimal: manage.py builtin commands fail if settings are provided as argument"
args = ['sqlall','--settings=settings', 'admin_scripts'] args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, 'App with label admin_scripts could not be found') self.assertOutput(err, 'App with label admin_scripts could not be found')
@ -795,7 +804,7 @@ class ManageMinimalSettings(AdminScriptTestCase):
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"minimal: manage.py builtin commands fail if settings are provided in the environment" "minimal: manage.py builtin commands fail if settings are provided in the environment"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_manage(args,'settings') out, err = self.run_manage(args,'regressiontests.settings')
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, 'App with label admin_scripts could not be found') self.assertOutput(err, 'App with label admin_scripts could not be found')
@ -822,7 +831,7 @@ class ManageMinimalSettings(AdminScriptTestCase):
def test_custom_command_with_settings(self): def test_custom_command_with_settings(self):
"minimal: manage.py can't execute user commands, even if settings are provided as argument" "minimal: manage.py can't execute user commands, even if settings are provided as argument"
args = ['noargs_command', '--settings=settings'] args = ['noargs_command', '--settings=regressiontests.settings']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Unknown command: 'noargs_command'") self.assertOutput(err, "Unknown command: 'noargs_command'")
@ -830,7 +839,7 @@ class ManageMinimalSettings(AdminScriptTestCase):
def test_custom_command_with_environment(self): def test_custom_command_with_environment(self):
"minimal: manage.py can't execute user commands, even if settings are provided in environment" "minimal: manage.py can't execute user commands, even if settings are provided in environment"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_manage(args,'settings') out, err = self.run_manage(args,'regressiontests.settings')
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Unknown command: 'noargs_command'") self.assertOutput(err, "Unknown command: 'noargs_command'")
@ -849,56 +858,56 @@ class ManageAlternateSettings(AdminScriptTestCase):
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertOutput(err, "Could not import settings 'regressiontests.settings'")
def test_builtin_with_settings(self): def test_builtin_with_settings(self):
"alternate: manage.py builtin commands fail if settings are provided as argument but no defaults" "alternate: manage.py builtin commands work with settings provided as argument"
args = ['sqlall','--settings=alternate_settings', 'admin_scripts'] args = ['sqlall','--settings=alternate_settings', 'admin_scripts']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertOutput(out, 'CREATE TABLE "admin_scripts_article"')
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertNoOutput(err)
def test_builtin_with_environment(self): def test_builtin_with_environment(self):
"alternate: manage.py builtin commands fail if settings are provided in the environment but no defaults" "alternate: manage.py builtin commands work if settings are provided in the environment"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_manage(args,'alternate_settings') out, err = self.run_manage(args,'alternate_settings')
self.assertNoOutput(out) self.assertOutput(out, 'CREATE TABLE "admin_scripts_article"')
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertNoOutput(err)
def test_builtin_with_bad_settings(self): def test_builtin_with_bad_settings(self):
"alternate: manage.py builtin commands fail if settings file (from argument) doesn't exist" "alternate: manage.py builtin commands fail if settings file (from argument) doesn't exist"
args = ['sqlall','--settings=bad_settings', 'admin_scripts'] args = ['sqlall','--settings=bad_settings', 'admin_scripts']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertOutput(err, "Could not import settings 'bad_settings'")
def test_builtin_with_bad_environment(self): def test_builtin_with_bad_environment(self):
"alternate: manage.py builtin commands fail if settings file (from environment) doesn't exist" "alternate: manage.py builtin commands fail if settings file (from environment) doesn't exist"
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_manage(args,'bad_settings') out, err = self.run_manage(args,'bad_settings')
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertOutput(err, "Could not import settings 'bad_settings'")
def test_custom_command(self): def test_custom_command(self):
"alternate: manage.py can't execute user commands" "alternate: manage.py can't execute user commands without settings"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertOutput(err, "Unknown command: 'noargs_command'")
def test_custom_command_with_settings(self): def test_custom_command_with_settings(self):
"alternate: manage.py can't execute user commands, even if settings are provided as argument" "alternate: manage.py can execute user commands if settings are provided as argument"
args = ['noargs_command', '--settings=alternate_settings'] args = ['noargs_command', '--settings=alternate_settings']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertOutput(out, "EXECUTE:NoArgsCommand options=[('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]")
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertNoOutput(err)
def test_custom_command_with_environment(self): def test_custom_command_with_environment(self):
"alternate: manage.py can't execute user commands, even if settings are provided in environment" "alternate: manage.py can execute user commands if settings are provided in environment"
args = ['noargs_command'] args = ['noargs_command']
out, err = self.run_manage(args,'alternate_settings') out, err = self.run_manage(args,'alternate_settings')
self.assertNoOutput(out) self.assertOutput(out, "EXECUTE:NoArgsCommand options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]")
self.assertOutput(err, "Can't find the file 'settings.py' in the directory containing './manage.py'") self.assertNoOutput(err)
class ManageMultipleSettings(AdminScriptTestCase): class ManageMultipleSettings(AdminScriptTestCase):
@ -999,7 +1008,7 @@ class ManageSettingsWithImportError(AdminScriptTestCase):
args = ['sqlall','admin_scripts'] args = ['sqlall','admin_scripts']
out, err = self.run_manage(args) out, err = self.run_manage(args)
self.assertNoOutput(out) self.assertNoOutput(out)
self.assertOutput(err, "ImportError: No module named foo42bar") self.assertOutput(err, "No module named foo42bar")
class ManageValidate(AdminScriptTestCase): class ManageValidate(AdminScriptTestCase):
def tearDown(self): def tearDown(self):

View File

@ -188,25 +188,25 @@ class CustomTestRunnerOptionsTests(AdminScriptTestCase):
self.remove_settings('settings.py') self.remove_settings('settings.py')
def test_default_options(self): def test_default_options(self):
args = ['test', '--settings=settings'] args = ['test', '--settings=regressiontests.settings']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, '1:2:3') self.assertOutput(out, '1:2:3')
def test_default_and_given_options(self): def test_default_and_given_options(self):
args = ['test', '--settings=settings', '--option_b=foo'] args = ['test', '--settings=regressiontests.settings', '--option_b=foo']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, '1:foo:3') self.assertOutput(out, '1:foo:3')
def test_option_name_and_value_separated(self): def test_option_name_and_value_separated(self):
args = ['test', '--settings=settings', '--option_b', 'foo'] args = ['test', '--settings=regressiontests.settings', '--option_b', 'foo']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, '1:foo:3') self.assertOutput(out, '1:foo:3')
def test_all_options_given(self): def test_all_options_given(self):
args = ['test', '--settings=settings', '--option_a=bar', '--option_b=foo', '--option_c=31337'] args = ['test', '--settings=regressiontests.settings', '--option_a=bar', '--option_b=foo', '--option_c=31337']
out, err = self.run_django_admin(args) out, err = self.run_django_admin(args)
self.assertNoOutput(err) self.assertNoOutput(err)
self.assertOutput(out, 'bar:foo:31337') self.assertOutput(out, 'bar:foo:31337')