Add custom tests runner that replaces the custom "runtests"
management command.
This commit is contained in:
41
mayan/apps/common/tests/runner.py
Normal file
41
mayan/apps/common/tests/runner.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
|
||||
from django import apps
|
||||
from django.conf import settings
|
||||
from django.test.runner import DiscoverRunner
|
||||
|
||||
|
||||
class MayanTestRunner(DiscoverRunner):
|
||||
@classmethod
|
||||
def add_arguments(cls, parser):
|
||||
DiscoverRunner.add_arguments(parser)
|
||||
|
||||
def build_suite(self, *args, **kwargs):
|
||||
self.top_level = os.path.join(settings.BASE_DIR, 'apps')
|
||||
|
||||
test_suit = super(MayanTestRunner, self).build_suite(*args, **kwargs)
|
||||
|
||||
new_suite = self.test_suite()
|
||||
|
||||
# Apps that report they have tests
|
||||
|
||||
test_apps = [
|
||||
app.name for app in apps.apps.get_app_configs() if getattr(app, 'test', False)
|
||||
]
|
||||
|
||||
# Filter the test cases reported by the test runner by the apps that
|
||||
# reported tests
|
||||
|
||||
for test_case in test_suit:
|
||||
app_label = repr(test_case.__class__).split("'")[1].split('.')[0]
|
||||
if app_label in test_apps:
|
||||
new_suite.addTest(test_case)
|
||||
|
||||
print '-' * 10
|
||||
print 'Apps to test: {}'.format(', '.join(test_apps))
|
||||
print 'Total test cases: {}'.format(new_suite.countTestCases())
|
||||
print '-' * 10
|
||||
|
||||
return new_suite
|
||||
Reference in New Issue
Block a user