# try to import all .py files from a given directory
-import argparse
import glob
import os
import importlib
import importlib.util
-
+import pytest
def _module_name(path):
task = os.path.splitext(path)[0]
line = f'Importing {package}{mod_name} from {path}'
print(f'{line:<80}', end='')
mod_spec = importlib.util.find_spec(mod_name, package)
- mod = mod_spec.loader.load_module()
+ mod = mod_spec.loader.load_module(f'{package}{mod_name}')
if mod is None:
result = 'FAIL'
else:
result = 'DONE'
print(f'{result:>6}')
mod_spec.loader.exec_module(mod)
+ return result
-def _parser():
- parser = argparse.ArgumentParser(
- description='Try to import a file',
- formatter_class=argparse.ArgumentDefaultsHelpFormatter)
- parser.add_argument('path', nargs='+', help='Glob to select files')
- return parser
+def get_paths():
+ for g in ['tasks/**/*.py']:
+ for p in glob.glob(g, recursive=True):
+ yield p
+@pytest.mark.parametrize("path", list(sorted(get_paths())))
+def test_import(path):
+ assert _import_file(path) == 'DONE'
-if __name__ == '__main__':
- parser = _parser()
- args = parser.parse_args()
- for g in args.path:
- for p in glob.glob(g, recursive=True):
- _import_file(p)
-c{toxinidir}/../src/mypy-constrains.txt
commands = mypy {posargs:.}
-[testenv:import-tasks]
-basepython = python3
-deps = {env:TEUTHOLOGY_GIT:git+https://github.com/ceph/teuthology.git@master}#egg=teuthology[coverage,orchestra,test]
-commands = python test_import.py {posargs:tasks/**/*.py}
-
[testenv:py3]
basepython = python3
deps =
- {env:TEUTHOLOGY_GIT:git+https://github.com/ceph/teuthology.git@master}#egg=teuthology[test]
+ {env:TEUTHOLOGY_GIT:git+https://github.com/ceph/teuthology.git@master}#egg=teuthology[coverage,orchestra,test]
httplib2
-commands = pytest -vv tasks/tests
+commands =
+ pytest --assert=plain test_import.py
+ pytest tasks/tests
+