summaryrefslogtreecommitdiff
path: root/tests/admin_scripts
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2019-11-01 21:08:23 -0700
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-12-06 12:11:44 +0100
commit5708327c3769262b845730996ca2784245ada4d1 (patch)
tree131808ba694efd6c52ed6e0bf3c941267c6fa301 /tests/admin_scripts
parent8eb0f73eed4535a9e53ffd988242b7294d859a55 (diff)
downloaddjango-5708327c3769262b845730996ca2784245ada4d1.tar.gz
Fixed #23433 -- Deprecated django-admin.py entry point in favor of django-admin.
Unify on the entry point created by setuptools entry_points feature.
Diffstat (limited to 'tests/admin_scripts')
-rw-r--r--tests/admin_scripts/test_django_admin_py.py37
-rw-r--r--tests/admin_scripts/tests.py22
2 files changed, 48 insertions, 11 deletions
diff --git a/tests/admin_scripts/test_django_admin_py.py b/tests/admin_scripts/test_django_admin_py.py
new file mode 100644
index 0000000000..56f5f0c1b5
--- /dev/null
+++ b/tests/admin_scripts/test_django_admin_py.py
@@ -0,0 +1,37 @@
+import subprocess
+import sys
+from pathlib import Path
+
+import django
+from django.test import SimpleTestCase
+
+
+class DeprecationTests(SimpleTestCase):
+ DEPRECATION_MESSAGE = (
+ b'RemovedInDjango40Warning: django-admin.py is deprecated in favor of '
+ b'django-admin.'
+ )
+
+ def _run_test(self, args):
+ p = subprocess.run(
+ [sys.executable, *args],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ check=True,
+ )
+ return p.stdout, p.stderr
+
+ def test_django_admin_py_deprecated(self):
+ django_admin_py = Path(django.__file__).parent / 'bin' / 'django-admin.py'
+ _, err = self._run_test(['-Wd', django_admin_py, '--version'])
+ self.assertIn(self.DEPRECATION_MESSAGE, err)
+
+ def test_main_not_deprecated(self):
+ _, err = self._run_test(['-Wd', '-m', 'django', '--version'])
+ self.assertNotIn(self.DEPRECATION_MESSAGE, err)
+
+ def test_django_admin_py_equivalent_main(self):
+ django_admin_py = Path(django.__file__).parent / 'bin' / 'django-admin.py'
+ django_admin_py_out, _ = self._run_test([django_admin_py, '--version'])
+ django_out, _ = self._run_test(['-m', 'django', '--version'])
+ self.assertEqual(django_admin_py_out, django_out)
diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py
index a0b7770757..6266619216 100644
--- a/tests/admin_scripts/tests.py
+++ b/tests/admin_scripts/tests.py
@@ -14,7 +14,6 @@ import unittest
from io import StringIO
from unittest import mock
-import django
from django import conf, get_version
from django.conf import settings
from django.core.management import (
@@ -125,8 +124,7 @@ class AdminScriptTestCase(SimpleTestCase):
return p.stdout, p.stderr
def run_django_admin(self, args, settings_file=None):
- script_dir = os.path.abspath(os.path.join(os.path.dirname(django.__file__), 'bin'))
- return self.run_test([os.path.join(script_dir, 'django-admin.py'), *args], settings_file)
+ return self.run_test(['-m', 'django', *args], settings_file)
def run_manage(self, args, settings_file=None, manage_py=None):
template_manage_py = (
@@ -1898,7 +1896,12 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase):
# running again..
out, err = self.run_django_admin(args)
self.assertNoOutput(out)
- self.assertOutput(err, "already exists")
+ self.assertOutput(
+ err,
+ "CommandError: 'testproject' conflicts with the name of an "
+ "existing Python module and cannot be used as a project name. "
+ "Please try another name.",
+ )
def test_invalid_project_name(self):
"Make sure the startproject management command validates a project name"
@@ -2160,8 +2163,10 @@ class StartApp(AdminScriptTestCase):
)
def test_overlaying_app(self):
- self.run_django_admin(['startapp', 'app1'])
- out, err = self.run_django_admin(['startapp', 'app2', 'app1'])
+ # Use a subdirectory so it is outside the PYTHONPATH.
+ os.makedirs(os.path.join(self.test_dir, 'apps/app1'))
+ self.run_django_admin(['startapp', 'app1', 'apps/app1'])
+ out, err = self.run_django_admin(['startapp', 'app2', 'apps/app1'])
self.assertOutput(
err,
"already exists. Overlaying an app into an existing directory "
@@ -2261,11 +2266,6 @@ class Dumpdata(AdminScriptTestCase):
class MainModule(AdminScriptTestCase):
"""python -m django works like django-admin."""
- def test_runs_django_admin(self):
- cmd_out, _ = self.run_django_admin(['--version'])
- mod_out, _ = self.run_test(['-m', 'django', '--version'])
- self.assertEqual(mod_out, cmd_out)
-
def test_program_name_in_help(self):
out, err = self.run_test(['-m', 'django', 'help'])
self.assertOutput(out, "Type 'python -m django help <subcommand>' for help on a specific subcommand.")