tests: adjust 'extra' tests API to better design from core3

Do not force inheritance of ExtraTestMixin and QubesTestCase. Instead
provide 'qubes.tests.extra.ExtraTestCase' for external tests. This makes
the API less "magic", easier to understand and apply static analysis
tools on it.

QubesOS/qubes-issues#1800
This commit is contained in:
Marek Marczykowski-Górecki 2016-05-02 00:19:18 +02:00
부모 edd473c4be
커밋 d88ff935d0
No known key found for this signature in database
GPG 키 ID: 063938BA42CFA724
3개의 변경된 파일6개의 추가작업 그리고 13개의 파일을 삭제

파일 보기

@ -175,7 +175,7 @@ class QubesTestCase(unittest.TestCase):
def __str__(self): def __str__(self):
return '{}/{}/{}'.format( return '{}/{}/{}'.format(
'.'.join(self.__class__.__module__.split('.')[2:]), self.__class__.__module__,
self.__class__.__name__, self.__class__.__name__,
self._testMethodName) self._testMethodName)

파일 보기

@ -27,12 +27,12 @@ import qubes.tests
import qubes.qubes import qubes.qubes
class ExtraTestMixin(qubes.tests.SystemTestsMixin): class ExtraTestCase(qubes.tests.SystemTestsMixin, qubes.tests.QubesTestCase):
template = None template = None
def setUp(self): def setUp(self):
super(ExtraTestMixin, self).setUp() super(ExtraTestCase, self).setUp()
self.qc.unlock_db() self.qc.unlock_db()
def create_vms(self, names): def create_vms(self, names):
@ -74,13 +74,7 @@ class ExtraTestMixin(qubes.tests.SystemTestsMixin):
def load_tests(loader, tests, pattern): def load_tests(loader, tests, pattern):
for entry in pkg_resources.iter_entry_points('qubes.tests.extra'): for entry in pkg_resources.iter_entry_points('qubes.tests.extra'):
for test_case in entry.load()(): for test_case in entry.load()():
tests.addTests(loader.loadTestsFromTestCase( tests.addTests(loader.loadTestsFromTestCase(test_case))
type(
entry.name + '_' + test_case.__name__,
(test_case, ExtraTestMixin, qubes.tests.QubesTestCase),
{}
)
))
try: try:
qc = qubes.qubes.QubesVmCollection() qc = qubes.qubes.QubesVmCollection()
@ -100,8 +94,7 @@ def load_tests(loader, tests, pattern):
type( type(
'{}_{}_{}'.format( '{}_{}_{}'.format(
entry.name, test_case.__name__, template), entry.name, test_case.__name__, template),
(test_case, ExtraTestMixin, (test_case,),
qubes.tests.QubesTestCase),
{'template': template} {'template': template}
) )
)) ))

파일 보기

@ -314,7 +314,7 @@ def main():
for name in args.names: for name in args.names:
suite.addTests( suite.addTests(
[test for test in list_test_cases(alltests) [test for test in list_test_cases(alltests)
if (str(test)+'/').startswith(name.replace('.', '/')+'/')]) if str(test).startswith(name)])
else: else:
suite.addTests(loader.loadTestsFromName('qubes.tests')) suite.addTests(loader.loadTestsFromName('qubes.tests'))