Begin to implement #1
Some checks failed
buildbot/tox Build done.

This commit is contained in:
2019-10-31 16:57:40 +01:00
parent 54a708f8dd
commit b4273d9fd7
11 changed files with 161 additions and 18 deletions

View File

@@ -4,7 +4,9 @@ import sys
import unittest
import pytest
from ..config import DJANGO_SETTINGS_MODULE_NAME
from unittest import mock
from ..config import DJANGO_SETTINGS_DIR
from ..program import Program
@@ -24,7 +26,7 @@ class MainTestCase(unittest.TestCase):
self.assertEqual(os.EX_OK, exitval, 'program() does not return os.EX_OK')
self.assertTrue(os.path.isdir(project_dir), 'project directory was not created')
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_MODULE_NAME)
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_DIR)
self.assertTrue(os.path.isdir(settings_dir), 'settings directory was not created')
settings_file = os.path.join(settings_dir, 'settings.py')
self.assertTrue(os.path.isfile(settings_file), 'settings.py was not created')
@@ -44,6 +46,12 @@ class MainTestCase(unittest.TestCase):
tmpdir = self.tmpdir
project_dir = os.path.join(str(tmpdir), 'env', 'django')
argv = ['-c', project_dir]
self._program(argv=argv)
argv = ['-a', 'django_deploy', '-a', 'django_deploy.tests.fake_app', project_dir]
self._program(argv=argv)
expected_installed_apps = [
'django.contrib.admin',
'django.contrib.auth',
@@ -51,17 +59,10 @@ class MainTestCase(unittest.TestCase):
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'fake_app1',
'fake_app2',
'django_deploy.tests.fake_app',
]
argv = ['-c', project_dir]
self._program(argv=argv)
argv = ['-a', 'django_deploy', '-a', 'django_deploy.tests', project_dir]
self._program(argv=argv)
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_MODULE_NAME)
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_DIR)
sys.path.insert(0, settings_dir)
settings = importlib.import_module('settings')
if sys.version_info.major == 2: # pragma: no cover
@@ -69,4 +70,54 @@ class MainTestCase(unittest.TestCase):
else: # pragma: no cover
importlib.reload(settings) # pylint: disable=no-member
sys.path.pop(0)
self.assertListEqual(expected_installed_apps, settings.INSTALLED_APPS)
def test_merge_root_urlconf(self):
tmpdir = self.tmpdir
project_dir = os.path.join(str(tmpdir), 'env', 'django')
argv = ['-c', project_dir]
self._program(argv=argv)
argv = ['-a', 'django_deploy', '-a', 'django_deploy.tests.fake_app', project_dir]
self._program(argv=argv)
if 'django.contrib.admin' in sys.modules:
original_admin = sys.modules['django.contrib.admin']
else:
original_admin = None
mock_admin = mock.Mock()
sys.modules['django.contrib.admin'] = mock_admin
from django.urls import path
expected_urlpatterns = [
('URLPattern', 'admin/', mock_admin.site.urls),
('URLResolver', 'fake/'),
]
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_DIR)
sys.path.insert(0, settings_dir)
root_urlconf = importlib.import_module('urls')
if sys.version_info.major == 2: # pragma: no cover
reload(root_urlconf) # pylint: disable=undefined-variable
else: # pragma: no cover
importlib.reload(root_urlconf) # pylint: disable=no-member
sys.path.pop(0)
if original_admin:
sys.modules['django.contrib.admin'] = original_admin
real_urlpatterns = root_urlconf.urlpatterns
self.assertEqual(len(expected_urlpatterns), len(real_urlpatterns))
for i in range(0, len(expected_urlpatterns)):
expected = expected_urlpatterns[i]
real = real_urlpatterns[i]
self.assertEqual(expected[0], real.__class__.__name__)
if expected[0] == 'URLPattern':
self.assertIsNotNone(real.pattern.match(expected[1]))
self.assertEqual(expected[2], real.callback)
else:
raise Exception(dir(real))