summaryrefslogtreecommitdiff
path: root/tests/regressiontests/admin_scripts/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/regressiontests/admin_scripts/tests.py')
-rw-r--r--tests/regressiontests/admin_scripts/tests.py353
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')))