it works. but coverage is too low.
All checks were successful
buildbot/tox Build done.

This commit is contained in:
2019-11-07 17:01:53 +01:00
parent b4273d9fd7
commit 8e86233431
9 changed files with 151 additions and 118 deletions

View File

@@ -4,10 +4,9 @@ import sys
import unittest
import pytest
from unittest import mock
from ..config import DJANGO_SETTINGS_DIR
from ..program import Program
from ..utils import get_root_urlconf
class MainTestCase(unittest.TestCase):
@@ -83,41 +82,38 @@ class MainTestCase(unittest.TestCase):
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']
root_urlconf = get_root_urlconf(project_dir)
if hasattr(root_urlconf, 'path'):
expected_urlpatterns = [
('URLPattern', 'admin/', 'django.contrib.admin.site.urls'),
]
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/'),
expected_urlpatterns = [
('URLPattern', '^admin/', 'django.contrib.admin.site.urls'),
]
expected_urlpatterns += [
('URLResolver', '^fake/', 'django_deploy.tests.fake_app.urls'),
]
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]
for i, expected in enumerate(expected_urlpatterns):
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)
real_class_name = real.__class__.__name__
self.assertTrue(real_class_name.endswith(expected[0]))
if real_class_name == 'URLPattern':
self.assertEqual(expected[1], str(real.pattern))
self.assertTrue(real.callback.startswith("<Mock name='{}' id=".format(expected[2])))
elif real_class_name == 'RegexURLPattern':
self.assertEqual(expected[1], real.regex.pattern)
self.assertTrue(real.callback.startswith("<Mock name='{}' id=".format(expected[2])))
elif real_class_name == 'URLResolver':
self.assertEqual(expected[1], str(real.pattern))
self.assertEqual(expected[2], real.urlconf_name.__name__)
elif real_class_name == 'RegexURLResolver':
self.assertEqual(expected[1], real.regex.pattern)
self.assertEqual(expected[2], real.urlconf_name.__name__)
else:
raise Exception(dir(real))
self.fail('Unknown urlpattern class: {}'.format(real_class_name))