Add custom tests runner that replaces the custom "runtests"

management command.
This commit is contained in:
Roberto Rosario
2017-02-17 18:12:48 -04:00
parent df4aabcc0a
commit 0078600e62
8 changed files with 53 additions and 45 deletions

View 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