diff options
Diffstat (limited to 'tests/regressiontests/admin_scripts/tests.py')
| -rw-r--r-- | tests/regressiontests/admin_scripts/tests.py | 353 |
1 files changed, 220 insertions, 133 deletions
diff --git a/tests/regressiontests/admin_scripts/tests.py b/tests/regressiontests/admin_scripts/tests.py index 72d47adce1..8fd74db556 100644 --- a/tests/regressiontests/admin_scripts/tests.py +++ b/tests/regressiontests/admin_scripts/tests.py @@ -6,24 +6,29 @@ and default settings.py files. from __future__ import with_statement import os +import re import shutil import socket import sys -import re +import urllib from django import conf, bin, get_version from django.conf import settings from django.test.simple import DjangoTestSuiteRunner from django.utils import unittest +from django.test import LiveServerTestCase + +test_dir = os.path.dirname(os.path.dirname(__file__)) +expected_query_re = re.compile(r'CREATE TABLE [`"]admin_scripts_article[`"]', re.IGNORECASE) class AdminScriptTestCase(unittest.TestCase): def write_settings(self, filename, apps=None, is_dir=False, sdict=None): test_dir = os.path.dirname(os.path.dirname(__file__)) if is_dir: - settings_dir = os.path.join(test_dir,filename) + settings_dir = os.path.join(test_dir, filename) os.mkdir(settings_dir) - settings_file = open(os.path.join(settings_dir,'__init__.py'), 'w') + settings_file = open(os.path.join(settings_dir, '__init__.py'), 'w') else: settings_file = open(os.path.join(test_dir, filename), 'w') settings_file.write('# Settings file automatically generated by regressiontests.admin_scripts test case\n') @@ -50,7 +55,6 @@ class AdminScriptTestCase(unittest.TestCase): settings_file.close() def remove_settings(self, filename, is_dir=False): - test_dir = os.path.dirname(os.path.dirname(__file__)) full_name = os.path.join(test_dir, filename) if is_dir: shutil.rmtree(full_name) @@ -84,7 +88,6 @@ class AdminScriptTestCase(unittest.TestCase): return paths def run_test(self, script, args, settings_file=None, apps=None): - test_dir = os.path.dirname(os.path.dirname(__file__)) project_dir = os.path.dirname(test_dir) base_dir = os.path.dirname(project_dir) ext_backend_base_dirs = self._ext_backend_paths() @@ -142,13 +145,12 @@ class AdminScriptTestCase(unittest.TestCase): def run_django_admin(self, args, settings_file=None): bin_dir = os.path.abspath(os.path.dirname(bin.__file__)) - return self.run_test(os.path.join(bin_dir,'django-admin.py'), args, settings_file) + return self.run_test(os.path.join(bin_dir, 'django-admin.py'), args, settings_file) def run_manage(self, args, settings_file=None): conf_dir = os.path.dirname(conf.__file__) template_manage_py = os.path.join(conf_dir, 'project_template', 'manage.py') - test_dir = os.path.dirname(os.path.dirname(__file__)) test_manage_py = os.path.join(test_dir, 'manage.py') shutil.copyfile(template_manage_py, test_manage_py) @@ -196,22 +198,22 @@ class DjangoAdminNoSettings(AdminScriptTestCase): def test_builtin_command(self): "no settings: django-admin builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, 'environment variable DJANGO_SETTINGS_MODULE is undefined') def test_builtin_with_bad_settings(self): "no settings: django-admin 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_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "no settings: django-admin builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -228,36 +230,36 @@ class DjangoAdminDefaultSettings(AdminScriptTestCase): def test_builtin_command(self): "default: django-admin builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, 'environment variable DJANGO_SETTINGS_MODULE is undefined') def test_builtin_with_settings(self): "default: django-admin builtin commands succeed if settings are provided as argument" - args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts'] + args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_environment(self): "default: django-admin builtin commands succeed if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'regressiontests.settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'regressiontests.settings') self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_bad_settings(self): "default: django-admin 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_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "default: django-admin builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -278,7 +280,7 @@ class DjangoAdminDefaultSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "default: django-admin can execute user commands if settings are provided in environment" args = ['noargs_command'] - out, err = self.run_django_admin(args,'regressiontests.settings') + out, err = self.run_django_admin(args, 'regressiontests.settings') self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:NoArgsCommand") @@ -294,36 +296,36 @@ class DjangoAdminFullPathDefaultSettings(AdminScriptTestCase): def test_builtin_command(self): "fulldefault: django-admin builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, 'environment variable DJANGO_SETTINGS_MODULE is undefined') def test_builtin_with_settings(self): "fulldefault: django-admin builtin commands succeed if a settings file is provided" - args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts'] + args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_environment(self): "fulldefault: django-admin builtin commands succeed if the environment contains settings" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'regressiontests.settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'regressiontests.settings') self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_bad_settings(self): "fulldefault: django-admin 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_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "fulldefault: django-admin builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -344,7 +346,7 @@ class DjangoAdminFullPathDefaultSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "fulldefault: django-admin can execute user commands if settings are provided in environment" args = ['noargs_command'] - out, err = self.run_django_admin(args,'regressiontests.settings') + out, err = self.run_django_admin(args, 'regressiontests.settings') self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:NoArgsCommand") @@ -353,43 +355,43 @@ class DjangoAdminMinimalSettings(AdminScriptTestCase): doesn't contain the test application. """ def setUp(self): - self.write_settings('settings.py', apps=['django.contrib.auth','django.contrib.contenttypes']) + self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes']) def tearDown(self): self.remove_settings('settings.py') def test_builtin_command(self): "minimal: django-admin builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, 'environment variable DJANGO_SETTINGS_MODULE is undefined') def test_builtin_with_settings(self): "minimal: django-admin builtin commands fail if settings are provided as argument" - args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts'] + args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, 'App with label admin_scripts could not be found') def test_builtin_with_environment(self): "minimal: django-admin builtin commands fail if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'regressiontests.settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'regressiontests.settings') self.assertNoOutput(out) self.assertOutput(err, 'App with label admin_scripts could not be found') def test_builtin_with_bad_settings(self): "minimal: django-admin 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_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "minimal: django-admin builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -410,7 +412,7 @@ class DjangoAdminMinimalSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "minimal: django-admin can't execute user commands, even if settings are provided in environment" args = ['noargs_command'] - out, err = self.run_django_admin(args,'regressiontests.settings') + out, err = self.run_django_admin(args, 'regressiontests.settings') self.assertNoOutput(out) self.assertOutput(err, "Unknown command: 'noargs_command'") @@ -426,36 +428,36 @@ class DjangoAdminAlternateSettings(AdminScriptTestCase): def test_builtin_command(self): "alternate: django-admin builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, 'environment variable DJANGO_SETTINGS_MODULE is undefined') def test_builtin_with_settings(self): "alternate: django-admin builtin commands succeed if settings are provided as argument" - args = ['sqlall','--settings=regressiontests.alternate_settings', 'admin_scripts'] + args = ['sqlall', '--settings=regressiontests.alternate_settings', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_environment(self): "alternate: django-admin builtin commands succeed if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'regressiontests.alternate_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'regressiontests.alternate_settings') self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_bad_settings(self): "alternate: django-admin 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_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "alternate: django-admin builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -476,7 +478,7 @@ class DjangoAdminAlternateSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "alternate: django-admin can execute user commands if settings are provided in environment" args = ['noargs_command'] - out, err = self.run_django_admin(args,'regressiontests.alternate_settings') + out, err = self.run_django_admin(args, 'regressiontests.alternate_settings') self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:NoArgsCommand") @@ -488,7 +490,7 @@ class DjangoAdminMultipleSettings(AdminScriptTestCase): alternate settings must be used by the running script. """ def setUp(self): - self.write_settings('settings.py', apps=['django.contrib.auth','django.contrib.contenttypes']) + self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes']) self.write_settings('alternate_settings.py') def tearDown(self): @@ -497,35 +499,35 @@ class DjangoAdminMultipleSettings(AdminScriptTestCase): def test_builtin_command(self): "alternate: django-admin builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, 'environment variable DJANGO_SETTINGS_MODULE is undefined') def test_builtin_with_settings(self): "alternate: django-admin builtin commands succeed if settings are provided as argument" - args = ['sqlall','--settings=regressiontests.alternate_settings', 'admin_scripts'] + args = ['sqlall', '--settings=regressiontests.alternate_settings', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_environment(self): "alternate: django-admin builtin commands succeed if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'regressiontests.alternate_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'regressiontests.alternate_settings') self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_bad_settings(self): "alternate: django-admin 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_django_admin(args) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "alternate: django-admin builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -546,7 +548,7 @@ class DjangoAdminMultipleSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "alternate: django-admin can execute user commands if settings are provided in environment" args = ['noargs_command'] - out, err = self.run_django_admin(args,'regressiontests.alternate_settings') + out, err = self.run_django_admin(args, 'regressiontests.alternate_settings') self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:NoArgsCommand") @@ -565,31 +567,41 @@ class DjangoAdminSettingsDirectory(AdminScriptTestCase): def test_setup_environ(self): "directory: startapp creates the correct directory" - 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') - out, err = self.run_django_admin(args,'regressiontests.settings') + out, err = self.run_django_admin(args, 'regressiontests.settings') + self.addCleanup(shutil.rmtree, app_path) + self.assertNoOutput(err) + self.assertTrue(os.path.exists(app_path)) + + def test_setup_environ_custom_template(self): + "directory: startapp creates the correct directory with a custom template" + template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'app_template') + args = ['startapp', '--template', template_path, 'custom_settings_test'] + app_path = os.path.join(test_dir, 'custom_settings_test') + out, err = self.run_django_admin(args, 'regressiontests.settings') self.addCleanup(shutil.rmtree, app_path) self.assertNoOutput(err) self.assertTrue(os.path.exists(app_path)) + self.assertTrue(os.path.exists(os.path.join(app_path, 'api.py'))) def test_builtin_command(self): "directory: django-admin builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(out) self.assertOutput(err, 'environment variable DJANGO_SETTINGS_MODULE is undefined') def test_builtin_with_bad_settings(self): "directory: django-admin 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_django_admin(args) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "directory: django-admin builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -602,15 +614,15 @@ class DjangoAdminSettingsDirectory(AdminScriptTestCase): def test_builtin_with_settings(self): "directory: django-admin builtin commands succeed if settings are provided as argument" - args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts'] + args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts'] out, err = self.run_django_admin(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_environment(self): "directory: django-admin builtin commands succeed if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_django_admin(args,'regressiontests.settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_django_admin(args, 'regressiontests.settings') self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') @@ -626,22 +638,22 @@ class ManageNoSettings(AdminScriptTestCase): def test_builtin_command(self): "no settings: manage.py builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'regressiontests.settings'") def test_builtin_with_bad_settings(self): "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) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "no settings: manage.py builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -658,36 +670,36 @@ class ManageDefaultSettings(AdminScriptTestCase): def test_builtin_command(self): "default: manage.py builtin commands succeed when default settings are appropriate" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_settings(self): "default: manage.py builtin commands succeed if settings are provided as argument" - args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts'] + args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_environment(self): "default: manage.py builtin commands succeed if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'regressiontests.settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'regressiontests.settings') self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_bad_settings(self): "default: manage.py builtin commands succeed 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) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "default: manage.py builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -708,7 +720,7 @@ class ManageDefaultSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "default: manage.py can execute user commands when settings are provided in environment" args = ['noargs_command'] - out, err = self.run_manage(args,'regressiontests.settings') + out, err = self.run_manage(args, 'regressiontests.settings') self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:NoArgsCommand") @@ -725,36 +737,36 @@ class ManageFullPathDefaultSettings(AdminScriptTestCase): def test_builtin_command(self): "fulldefault: manage.py builtin commands succeed when default settings are appropriate" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_settings(self): "fulldefault: manage.py builtin commands succeed if settings are provided as argument" - args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts'] + args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_environment(self): "fulldefault: manage.py builtin commands succeed if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'regressiontests.settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'regressiontests.settings') self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_bad_settings(self): "fulldefault: manage.py builtin commands succeed 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) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "fulldefault: manage.py builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -775,7 +787,7 @@ class ManageFullPathDefaultSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "fulldefault: manage.py can execute user commands when settings are provided in environment" args = ['noargs_command'] - out, err = self.run_manage(args,'regressiontests.settings') + out, err = self.run_manage(args, 'regressiontests.settings') self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:NoArgsCommand") @@ -784,43 +796,43 @@ class ManageMinimalSettings(AdminScriptTestCase): doesn't contain the test application. """ def setUp(self): - self.write_settings('settings.py', apps=['django.contrib.auth','django.contrib.contenttypes']) + self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes']) def tearDown(self): self.remove_settings('settings.py') def test_builtin_command(self): "minimal: manage.py builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(out) self.assertOutput(err, 'App with label admin_scripts could not be found') def test_builtin_with_settings(self): "minimal: manage.py builtin commands fail if settings are provided as argument" - args = ['sqlall','--settings=regressiontests.settings', 'admin_scripts'] + args = ['sqlall', '--settings=regressiontests.settings', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(out) self.assertOutput(err, 'App with label admin_scripts could not be found') def test_builtin_with_environment(self): "minimal: manage.py builtin commands fail if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'regressiontests.settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'regressiontests.settings') self.assertNoOutput(out) self.assertOutput(err, 'App with label admin_scripts could not be found') def test_builtin_with_bad_settings(self): "minimal: 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) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "minimal: manage.py builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -841,7 +853,7 @@ class ManageMinimalSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "minimal: manage.py can't execute user commands, even if settings are provided in environment" args = ['noargs_command'] - out, err = self.run_manage(args,'regressiontests.settings') + out, err = self.run_manage(args, 'regressiontests.settings') self.assertNoOutput(out) self.assertOutput(err, "Unknown command: 'noargs_command'") @@ -857,38 +869,36 @@ class ManageAlternateSettings(AdminScriptTestCase): def test_builtin_command(self): "alternate: manage.py builtin commands fail with an import error when no default settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'regressiontests.settings'") def test_builtin_with_settings(self): "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) - expected_query_re = re.compile('CREATE TABLE [`"]admin_scripts_article[`"]', re.IGNORECASE) self.assertRegexpMatches(out, expected_query_re) self.assertNoOutput(err) def test_builtin_with_environment(self): "alternate: manage.py builtin commands work if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'alternate_settings') - expected_query_re = re.compile('CREATE TABLE [`"]admin_scripts_article[`"]', re.IGNORECASE) + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'alternate_settings') self.assertRegexpMatches(out, expected_query_re) self.assertNoOutput(err) def test_builtin_with_bad_settings(self): "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) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "alternate: manage.py builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -909,7 +919,7 @@ class ManageAlternateSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "alternate: manage.py can execute user commands if settings are provided in environment" args = ['noargs_command'] - out, err = self.run_manage(args,'alternate_settings') + out, err = self.run_manage(args, 'alternate_settings') self.assertOutput(out, "EXECUTE:NoArgsCommand options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") self.assertNoOutput(err) @@ -921,7 +931,7 @@ class ManageMultipleSettings(AdminScriptTestCase): alternate settings must be used by the running script. """ def setUp(self): - self.write_settings('settings.py', apps=['django.contrib.auth','django.contrib.contenttypes']) + self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes']) self.write_settings('alternate_settings.py') def tearDown(self): @@ -930,36 +940,36 @@ class ManageMultipleSettings(AdminScriptTestCase): def test_builtin_command(self): "multiple: manage.py builtin commands fail with an import error when no settings provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(out) self.assertOutput(err, 'App with label admin_scripts could not be found.') def test_builtin_with_settings(self): "multiple: manage.py builtin commands succeed if settings are provided as argument" - args = ['sqlall','--settings=alternate_settings', 'admin_scripts'] + args = ['sqlall', '--settings=alternate_settings', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_environment(self): "multiple: manage.py can execute builtin commands if settings are provided in the environment" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'alternate_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'alternate_settings') self.assertNoOutput(err) self.assertOutput(out, 'CREATE TABLE') def test_builtin_with_bad_settings(self): "multiple: 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) self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") def test_builtin_with_bad_environment(self): "multiple: manage.py builtin commands fail if settings file (from environment) doesn't exist" - args = ['sqlall','admin_scripts'] - out, err = self.run_manage(args,'bad_settings') + args = ['sqlall', 'admin_scripts'] + out, err = self.run_manage(args, 'bad_settings') self.assertNoOutput(out) self.assertOutput(err, "Could not import settings 'bad_settings'") @@ -980,7 +990,7 @@ class ManageMultipleSettings(AdminScriptTestCase): def test_custom_command_with_environment(self): "multiple: manage.py can execute user commands if settings are provided in environment" args = ['noargs_command'] - out, err = self.run_manage(args,'alternate_settings') + out, err = self.run_manage(args, 'alternate_settings') self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:NoArgsCommand") @@ -995,11 +1005,10 @@ class ManageSettingsWithImportError(AdminScriptTestCase): self.remove_settings('settings.py') def write_settings_with_import_error(self, filename, apps=None, is_dir=False, sdict=None): - test_dir = os.path.dirname(os.path.dirname(__file__)) if is_dir: - settings_dir = os.path.join(test_dir,filename) + settings_dir = os.path.join(test_dir, filename) os.mkdir(settings_dir) - settings_file = open(os.path.join(settings_dir,'__init__.py'), 'w') + settings_file = open(os.path.join(settings_dir, '__init__.py'), 'w') else: settings_file = open(os.path.join(test_dir, filename), 'w') settings_file.write('# Settings file automatically generated by regressiontests.admin_scripts test case\n') @@ -1009,7 +1018,7 @@ class ManageSettingsWithImportError(AdminScriptTestCase): def test_builtin_command(self): "import error: manage.py builtin commands shows useful diagnostic info when settings with import errors is provided" - args = ['sqlall','admin_scripts'] + args = ['sqlall', 'admin_scripts'] out, err = self.run_manage(args) self.assertNoOutput(out) self.assertOutput(err, "No module named foo42bar") @@ -1200,14 +1209,14 @@ class CommandTypes(AdminScriptTestCase): def test_specific_help(self): "--help can be used on a specific command" - args = ['sqlall','--help'] + args = ['sqlall', '--help'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s).") def test_base_command(self): "User BaseCommands can execute when a label is provided" - args = ['base_command','testlabel'] + args = ['base_command', 'testlabel'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', '1'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") @@ -1221,21 +1230,21 @@ class CommandTypes(AdminScriptTestCase): def test_base_command_multiple_label(self): "User BaseCommands can execute when no labels are provided" - args = ['base_command','testlabel','anotherlabel'] + args = ['base_command', 'testlabel', 'anotherlabel'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:BaseCommand labels=('testlabel', 'anotherlabel'), options=[('option_a', '1'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") def test_base_command_with_option(self): "User BaseCommands can execute with options when a label is provided" - args = ['base_command','testlabel','--option_a=x'] + args = ['base_command', 'testlabel', '--option_a=x'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") def test_base_command_with_options(self): "User BaseCommands can execute with multiple options when a label is provided" - args = ['base_command','testlabel','-a','x','--option_b=y'] + args = ['base_command', 'testlabel', '-a', 'x', '--option_b=y'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', 'y'), ('option_c', '3'), ('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") @@ -1249,7 +1258,7 @@ class CommandTypes(AdminScriptTestCase): def test_noargs_with_args(self): "NoArg Commands raise an error if an argument is provided" - args = ['noargs_command','argument'] + args = ['noargs_command', 'argument'] out, err = self.run_manage(args) self.assertOutput(err, "Error: Command doesn't accept any arguments") @@ -1259,7 +1268,7 @@ class CommandTypes(AdminScriptTestCase): out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.auth.models'") - self.assertOutput(out, os.sep.join(['django','contrib','auth','models.py'])) + self.assertOutput(out, os.sep.join(['django', 'contrib', 'auth', 'models.py'])) self.assertOutput(out, "'>, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") def test_app_command_no_apps(self): @@ -1270,14 +1279,14 @@ class CommandTypes(AdminScriptTestCase): def test_app_command_multiple_apps(self): "User AppCommands raise an error when multiple app names are provided" - args = ['app_command','auth','contenttypes'] + args = ['app_command', 'auth', 'contenttypes'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.auth.models'") - self.assertOutput(out, os.sep.join(['django','contrib','auth','models.py'])) + self.assertOutput(out, os.sep.join(['django', 'contrib', 'auth', 'models.py'])) self.assertOutput(out, "'>, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") self.assertOutput(out, "EXECUTE:AppCommand app=<module 'django.contrib.contenttypes.models'") - self.assertOutput(out, os.sep.join(['django','contrib','contenttypes','models.py'])) + self.assertOutput(out, os.sep.join(['django', 'contrib', 'contenttypes', 'models.py'])) self.assertOutput(out, "'>, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") def test_app_command_invalid_appname(self): @@ -1294,7 +1303,7 @@ class CommandTypes(AdminScriptTestCase): def test_label_command(self): "User LabelCommands can execute when a label is provided" - args = ['label_command','testlabel'] + args = ['label_command', 'testlabel'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:LabelCommand label=testlabel, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") @@ -1307,7 +1316,7 @@ class CommandTypes(AdminScriptTestCase): def test_label_command_multiple_label(self): "User LabelCommands are executed multiple times if multiple labels are provided" - args = ['label_command','testlabel','anotherlabel'] + args = ['label_command', 'testlabel', 'anotherlabel'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:LabelCommand label=testlabel, options=[('pythonpath', None), ('settings', None), ('traceback', None), ('verbosity', '1')]") @@ -1323,7 +1332,7 @@ class ArgumentOrder(AdminScriptTestCase): individual command. """ def setUp(self): - self.write_settings('settings.py', apps=['django.contrib.auth','django.contrib.contenttypes']) + self.write_settings('settings.py', apps=['django.contrib.auth', 'django.contrib.contenttypes']) self.write_settings('alternate_settings.py') def tearDown(self): @@ -1332,35 +1341,113 @@ class ArgumentOrder(AdminScriptTestCase): def test_setting_then_option(self): "Options passed after settings are correctly handled" - args = ['base_command','testlabel','--settings=alternate_settings','--option_a=x'] + args = ['base_command', 'testlabel', '--settings=alternate_settings', '--option_a=x'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]") def test_setting_then_short_option(self): "Short options passed after settings are correctly handled" - args = ['base_command','testlabel','--settings=alternate_settings','--option_a=x'] + args = ['base_command', 'testlabel', '--settings=alternate_settings', '--option_a=x'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]") def test_option_then_setting(self): "Options passed before settings are correctly handled" - args = ['base_command','testlabel','--option_a=x','--settings=alternate_settings'] + args = ['base_command', 'testlabel', '--option_a=x', '--settings=alternate_settings'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]") def test_short_option_then_setting(self): "Short options passed before settings are correctly handled" - args = ['base_command','testlabel','-a','x','--settings=alternate_settings'] + args = ['base_command', 'testlabel', '-a', 'x', '--settings=alternate_settings'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', '2'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]") def test_option_then_setting_then_option(self): "Options are correctly handled when they are passed before and after a setting" - args = ['base_command','testlabel','--option_a=x','--settings=alternate_settings','--option_b=y'] + args = ['base_command', 'testlabel', '--option_a=x', '--settings=alternate_settings', '--option_b=y'] out, err = self.run_manage(args) self.assertNoOutput(err) self.assertOutput(out, "EXECUTE:BaseCommand labels=('testlabel',), options=[('option_a', 'x'), ('option_b', 'y'), ('option_c', '3'), ('pythonpath', None), ('settings', 'alternate_settings'), ('traceback', None), ('verbosity', '1')]") + + +class StartProject(LiveServerTestCase, AdminScriptTestCase): + + def test_wrong_args(self): + "Make sure passing the wrong kinds of arguments raises a CommandError" + out, err = self.run_django_admin(['startproject']) + self.assertNoOutput(out) + self.assertOutput(err, "you must provide a project name") + + def test_simple_project(self): + "Make sure the startproject management command creates a project" + args = ['startproject', 'testproject'] + testproject_dir = os.path.join(test_dir, 'testproject') + + out, err = self.run_django_admin(args) + self.assertNoOutput(err) + self.assertTrue(os.path.isdir(testproject_dir)) + self.addCleanup(shutil.rmtree, testproject_dir) + + # running again.. + out, err = self.run_django_admin(args) + self.assertNoOutput(out) + self.assertOutput(err, "File exists") + + def test_simple_project_different_directory(self): + "Make sure the startproject management command creates a project in a specific directory" + args = ['startproject', 'testproject', 'othertestproject'] + testproject_dir = os.path.join(test_dir, 'othertestproject') + + out, err = self.run_django_admin(args) + self.assertNoOutput(err) + self.assertTrue(os.path.isdir(os.path.join(testproject_dir, 'testproject'))) + self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'testproject', 'manage.py'))) + self.addCleanup(shutil.rmtree, testproject_dir) + + # running again.. + out, err = self.run_django_admin(args) + self.assertNoOutput(out) + self.assertOutput(err, "File exists") + + def test_custom_project_template(self): + "Make sure the startproject management command is able to use a different project template" + template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template') + args = ['startproject', '--template', template_path, 'customtestproject'] + testproject_dir = os.path.join(test_dir, 'customtestproject') + + out, err = self.run_django_admin(args) + self.assertNoOutput(err) + self.assertTrue(os.path.isdir(testproject_dir)) + self.addCleanup(shutil.rmtree, testproject_dir) + self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'additional_dir'))) + + def test_custom_project_template_from_tarball_by_path(self): + "Make sure the startproject management command is able to use a different project template from a tarball" + template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template.tgz') + args = ['startproject', '--template', template_path, 'tarballtestproject'] + testproject_dir = os.path.join(test_dir, 'tarballtestproject') + + out, err = self.run_django_admin(args) + self.assertNoOutput(err) + self.assertTrue(os.path.isdir(testproject_dir)) + self.addCleanup(shutil.rmtree, testproject_dir) + self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'run.py'))) + + def test_custom_project_template_from_tarball_by_url(self): + "Make sure the startproject management command is able to use a different project template from a tarball via a url" + template_path = os.path.join(test_dir, 'admin_scripts', 'custom_templates', 'project_template.tgz') + template_url = '%s/admin_scripts/custom_templates/project_template.tgz' % self.live_server_url + + args = ['startproject', '--template', template_url, 'urltestproject'] + testproject_dir = os.path.join(test_dir, 'urltestproject') + + out, err = self.run_django_admin(args) + self.assertNoOutput(err) + self.assertTrue(os.path.isdir(testproject_dir)) + self.addCleanup(shutil.rmtree, testproject_dir) + self.assertTrue(os.path.exists(os.path.join(testproject_dir, 'run.py'))) |
