This commit is contained in:
2019-10-29 18:34:25 +01:00
commit 1b727c5b77
18 changed files with 486 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
import importlib
import os
import sys
import unittest
import pytest
from ..config import DJANGO_SETTINGS_MODULE_NAME
from ..program import Program
class MainTestCase(unittest.TestCase):
@pytest.fixture(autouse=True)
def tmpdir(self, tmpdir): # pylint: disable=method-hidden
self.tmpdir = tmpdir
def setUp(self):
self._program = Program()
def test_create(self):
tmpdir = self.tmpdir
project_dir = os.path.join(str(tmpdir), 'env', 'django')
exitval = self._program(argv=['-c', project_dir])
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)
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')
manage_script = os.path.join(project_dir, 'manage.py')
self.assertTrue(os.path.isfile(manage_script), 'manage.py was not created')
def test_create_dont_overwrite(self):
tmpdir = self.tmpdir
project_dir = os.path.join(str(tmpdir), 'env', 'django')
self._program(argv=['--create', project_dir])
exitval = self._program(argv=['--create', project_dir])
self.assertEqual(os.EX_NOPERM, exitval, 'second call to program() does not exit with os.EX_NOPERM')
def test_merge_installed_apps(self):
tmpdir = self.tmpdir
project_dir = os.path.join(str(tmpdir), 'env', 'django')
expected_installed_apps = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'fake_app1',
'fake_app2',
]
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)
sys.path.insert(0, settings_dir)
settings = importlib.import_module('settings')
importlib.reload(settings)
sys.path.pop(0)
self.assertListEqual(expected_installed_apps, settings.INSTALLED_APPS)