Tests: prerequisites check improved by using callable.

This is required for more flexible Python version check since ASGI works
for Python 3.5+.  Version check via 'startswith()' function removed as
not consistent.
This commit is contained in:
Max Romanov
2020-09-24 09:47:27 +03:00
parent 1fc51cf140
commit efe65dee4d

View File

@@ -67,32 +67,40 @@ def pytest_generate_tests(metafunc):
type = cls.application_type type = cls.application_type
def generate_tests(versions):
metafunc.fixturenames.append('tmp_ct')
metafunc.parametrize('tmp_ct', range(len(versions)))
for i, version in enumerate(versions):
option.generated_tests[
metafunc.function.__name__ + '[{}]'.format(i)
] = (type + ' ' + version)
# take available module from option and generate tests for each version # take available module from option and generate tests for each version
for module in cls.prerequisites['modules']: for module, prereq_version in cls.prerequisites['modules'].items():
if module in option.available['modules']: if module in option.available['modules']:
prereq_version = cls.prerequisites['modules'][module]
available_versions = option.available['modules'][module] available_versions = option.available['modules'][module]
if prereq_version == 'all': if prereq_version == 'all':
metafunc.fixturenames.append('tmp_ct') generate_tests(available_versions)
metafunc.parametrize('tmp_ct', range(len(available_versions)))
for i in range(len(available_versions)):
version = available_versions[i]
option.generated_tests[
metafunc.function.__name__ + '[{}]'.format(i)
] = (type + ' ' + version)
elif prereq_version == 'any': elif prereq_version == 'any':
option.generated_tests[metafunc.function.__name__] = ( option.generated_tests[metafunc.function.__name__] = (
type + ' ' + available_versions[0] type + ' ' + available_versions[0]
) )
elif callable(prereq_version):
generate_tests(
list(filter(prereq_version, available_versions))
)
else: else:
for version in available_versions: raise ValueError(
if version.startswith(prereq_version): """
option.generated_tests[metafunc.function.__name__] = ( Unexpected prerequisite version "%s" for module "%s" in %s.
type + ' ' + version 'all', 'any' or callable expected."""
) % (str(prereq_version), module, str(cls))
)
def pytest_sessionstart(session): def pytest_sessionstart(session):