diff --git a/tests/base.py b/tests/base.py index f6ba90fb0..25e9daf7c 100644 --- a/tests/base.py +++ b/tests/base.py @@ -1,4 +1,5 @@ import os +import re import shutil import unittest from os.path import exists, dirname, join @@ -14,6 +15,23 @@ class DjangoCookieTestCase(unittest.TestCase): ctx = {} destpath = None + def check_paths(self, paths): + """ + Method to check all paths have correct substitutions, + used by other tests cases + """ + # Construct the cookiecutter search pattern + pattern = "{{(\s?cookiecutter)[.](.*?)}}" + re_obj = re.compile(pattern) + + # Assert that no match is found in any of the files + for path in paths: + for line in open(path, 'r'): + match = re_obj.search(line) + self.assertIsNone( + match, + "cookiecutter variable not replaced in {}".format(path)) + def generate_project(self, extra_context=None): ctx = { "project_name": "My Test Project", diff --git a/tests/test_cookiecutter_substitution.py b/tests/test_cookiecutter_substitution.py index dd09daa80..5ac07406f 100644 --- a/tests/test_cookiecutter_substitution.py +++ b/tests/test_cookiecutter_substitution.py @@ -1,5 +1,4 @@ -import re - +from __future__ import absolute_import import sh from .base import DjangoCookieTestCase @@ -8,23 +7,24 @@ from .base import DjangoCookieTestCase class TestCookiecutterSubstitution(DjangoCookieTestCase): """Test that all cookiecutter instances are substituted""" - def test_all_cookiecutter_instances_are_substituted(self): + def test_default_configuration(self): # Build a list containing absolute paths to the generated files paths = self.generate_project() + self.check_paths(paths) - # Construct the cookiecutter search pattern - pattern = "{{(\s?cookiecutter)[.](.*?)}}" - re_obj = re.compile(pattern) + def test_maildump_enabled(self): + paths = self.generate_project(extra_context={'use_maildump': 'y'}) + self.check_paths(paths) - # Assert that no match is found in any of the files - for path in paths: - for line in open(path, 'r'): - match = re_obj.search(line) - self.assertIsNone( - match, - "cookiecutter variable not replaced in {}".format(path)) + def test_celery_enabled(self): + paths = self.generate_project(extra_context={'use_celery': 'y'}) + self.check_paths(paths) - def test_flake8_complaince(self): + def test_windows_enabled(self): + paths = self.generate_project(extra_context={'windows': 'y'}) + self.check_paths(paths) + + def test_flake8_compliance(self): """generated project should pass flake8""" self.generate_project() try: