From a36cf955727fee77aa7406ece12f0d609fd2c665 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Fri, 24 Jun 2016 15:39:59 +0000 Subject: [PATCH] Refactored the code to skip coverage testing a bit, and added skipping of template and url coverage. - Legacy-Id: 11472 --- ietf/group/tests.py | 2 +- ietf/meeting/tests_js.py | 2 +- ietf/utils/decorators.py | 7 ++++--- ietf/utils/test_runner.py | 29 +++++++++++++++++++++++++++-- ietf/utils/test_utils.py | 5 ----- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/ietf/group/tests.py b/ietf/group/tests.py index b8d345ef4..08d98aa91 100644 --- a/ietf/group/tests.py +++ b/ietf/group/tests.py @@ -13,7 +13,7 @@ import debug # pyflakes:ignore from ietf.group.models import Role, Group from ietf.group.utils import get_group_role_emails, get_child_group_role_emails, get_group_ad_emails from ietf.group.factories import GroupFactory -from ietf.utils.test_utils import set_coverage_checking +from ietf.utils.test_runner import set_coverage_checking from ietf.utils.test_data import make_test_data from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent diff --git a/ietf/meeting/tests_js.py b/ietf/meeting/tests_js.py index 5cbb44551..c5bc88b62 100644 --- a/ietf/meeting/tests_js.py +++ b/ietf/meeting/tests_js.py @@ -13,7 +13,7 @@ import debug # pyflakes:ignore from ietf.group import colors from ietf.meeting.test_data import make_meeting_test_data from ietf.meeting.models import SchedTimeSessAssignment -from ietf.utils.test_utils import set_coverage_checking +from ietf.utils.test_runner import set_coverage_checking from ietf.utils.pipe import pipe from ietf import settings diff --git a/ietf/utils/decorators.py b/ietf/utils/decorators.py index 8e6a375ea..2718d4ec2 100644 --- a/ietf/utils/decorators.py +++ b/ietf/utils/decorators.py @@ -4,13 +4,14 @@ from decorator import decorator from django.conf import settings +from test_runner import set_coverage_checking + @decorator def skip_coverage(f, *args, **kwargs): if settings.TEST_CODE_COVERAGE_CHECKER: - checker = settings.TEST_CODE_COVERAGE_CHECKER - checker.collector.pause() + set_coverage_checking(False) result = f(*args, **kwargs) - checker.collector.resume() + set_coverage_checking(True) return result else: return f(*args, **kwargs) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index f3ef529c2..dea530cba 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -70,6 +70,10 @@ test_database_name = None old_destroy = None old_create = None +template_coverage_collection = None +url_coverage_collection = None + + def safe_create_1(self, verbosity, *args, **kwargs): global test_database_name, old_create print " Creating test database..." @@ -103,13 +107,16 @@ def safe_destroy_0_1(*args, **kwargs): return old_destroy(*args, **kwargs) def template_coverage_loader(template_name, dirs): - loaded_templates.add(str(template_name)) + if template_coverage_collection == True: + loaded_templates.add(str(template_name)) raise TemplateDoesNotExist template_coverage_loader.is_usable = True class RecordUrlsMiddleware(object): def process_request(self, request): - visited_urls.add(request.path) + global url_coverage_collection + if url_coverage_collection == True: + visited_urls.add(request.path) def get_url_patterns(module, apps=None): def include(name): @@ -175,6 +182,18 @@ def save_test_results(failures, test_labels): tfile.close() +def set_coverage_checking(flag=True): + global template_coverage_collection + global url_coverage_collection + if flag: + settings.TEST_CODE_COVERAGE_CHECKER.collector.resume() + template_coverage_collection = True + url_coverage_collection = True + else: + settings.TEST_CODE_COVERAGE_CHECKER.collector.pause() + template_coverage_collection = False + url_coverage_collection = False + class CoverageReporter(Reporter): def report(self): self.find_file_reporters(None) @@ -325,6 +344,9 @@ class IetfTestRunner(DiscoverRunner): super(IetfTestRunner, self).__init__(**kwargs) def setup_test_environment(self, **kwargs): + global template_coverage_collection + global url_coverage_collection + ietf.utils.mail.test_mode = True ietf.utils.mail.SMTP_ADDR['ip4'] = '127.0.0.1' ietf.utils.mail.SMTP_ADDR['port'] = 2025 @@ -359,7 +381,10 @@ class IetfTestRunner(DiscoverRunner): } settings.TEMPLATE_LOADERS = ('ietf.utils.test_runner.template_coverage_loader',) + settings.TEMPLATE_LOADERS + template_coverage_collection = True + settings.MIDDLEWARE_CLASSES = ('ietf.utils.test_runner.RecordUrlsMiddleware',) + settings.MIDDLEWARE_CLASSES + url_coverage_collection = True self.code_coverage_checker = settings.TEST_CODE_COVERAGE_CHECKER if not self.code_coverage_checker._started: diff --git a/ietf/utils/test_utils.py b/ietf/utils/test_utils.py index 14d77c99e..bc4ed9b77 100644 --- a/ietf/utils/test_utils.py +++ b/ietf/utils/test_utils.py @@ -295,8 +295,3 @@ class TestCase(django.test.TestCase): self.assertTrue(resp['Content-Type'].startswith('text/html')) self.assertValidHTML(resp.content) -def set_coverage_checking(flag=True): - if flag: - settings.TEST_CODE_COVERAGE_CHECKER.collector.resume() - else: - settings.TEST_CODE_COVERAGE_CHECKER.collector.pause()