blob: 4ee59b565092576187a3966c5ef9083cf85bebdb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# try to import all .py files from a given directory
import glob
import os
import importlib
import importlib.util
import pytest
def _module_name(path):
task = os.path.splitext(path)[0]
parts = task.split(os.path.sep)
package = parts[0]
name = ''.join('.' + c for c in parts[1:])
return package, name
def _import_file(path):
package, mod_name = _module_name(path)
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(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 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'
|