Files
mayan-edms/mayan/apps/common/tests/runner.py
Roberto Rosario 8896f58d6f Add support for skipping a default set of tests
Tests to be excluded by default should be tagged
as 'exclude'.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
2019-04-04 16:48:11 -04:00

39 lines
1.2 KiB
Python

from __future__ import unicode_literals
from django import apps
from django.test.runner import DiscoverRunner
from .literals import EXCLUDE_TEST_TAG
class MayanTestRunner(DiscoverRunner):
@classmethod
def add_arguments(cls, parser):
DiscoverRunner.add_arguments(parser)
parser.add_argument(
'--mayan-apps', action='store_true', default=False,
dest='mayan_apps',
help='Test all Mayan apps that report to have tests.'
)
def __init__(self, *args, **kwargs):
self.mayan_apps = kwargs.pop('mayan_apps')
super(MayanTestRunner, self).__init__(*args, **kwargs)
# Test that should be excluded by default
# To include then pass --tag=exclude to the test runner invocation
if EXCLUDE_TEST_TAG not in self.tags:
self.exclude_tags |= set((EXCLUDE_TEST_TAG,))
def build_suite(self, *args, **kwargs):
# Apps that report they have tests
if self.mayan_apps:
args = list(args)
args[0] = [
app.name for app in apps.apps.get_app_configs() if getattr(
app, 'has_tests', False
)
]
return super(MayanTestRunner, self).build_suite(*args, **kwargs)