42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
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
|