26 lines
741 B
Python
26 lines
741 B
Python
|
import glob
|
||
|
import importlib
|
||
|
import inspect
|
||
|
import pytest
|
||
|
|
||
|
def discover_app_constructors():
|
||
|
apps = []
|
||
|
|
||
|
globs = glob.glob('wasp/apps/*.py')
|
||
|
names = [ g[5:-3].replace('/', '.') for g in globs ]
|
||
|
modules = [ importlib.import_module(n) for n in names ]
|
||
|
|
||
|
for m in modules:
|
||
|
for sym in m.__dict__.keys():
|
||
|
if len(sym) > 3 and sym[-3:] == 'App':
|
||
|
constructor = m.__dict__[sym]
|
||
|
sig = inspect.signature(constructor)
|
||
|
if len(sig.parameters) == 0:
|
||
|
apps.append(constructor)
|
||
|
|
||
|
return apps
|
||
|
|
||
|
def pytest_generate_tests(metafunc):
|
||
|
if 'constructor' in metafunc.fixturenames:
|
||
|
metafunc.parametrize('constructor', discover_app_constructors())
|