-
Notifications
You must be signed in to change notification settings - Fork 39
/
Copy pathtest_examples.py
68 lines (52 loc) · 2.32 KB
/
test_examples.py
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import importlib
import os.path
import pytest
import sys
EXAMPLES_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "examples"))
# make examples importable without keeping in source tree
sys.path.append(EXAMPLES_ROOT)
def _get_module(folder, filename):
# Don't fail during test gathering
try:
return importlib.import_module(f"{folder}.{filename.replace('.py', '')}")
except Exception:
return None
def _get_modules_to_test(*folders):
folder = ".".join(folders) if len(folders) > 0 else folders[0]
return [
(file, _get_module(folder, file))
for file in os.listdir(os.path.join(EXAMPLES_ROOT, *folders))
if file.endswith(".py")
]
def _no_examples_folder_or_running_sdist_tests():
return os.environ.get("CSP_TEST_SKIP_EXAMPLES", None) is not None or not os.path.exists(EXAMPLES_ROOT)
@pytest.mark.skipif(_no_examples_folder_or_running_sdist_tests(), reason="no examples present or manually skipping")
class TestExamples:
@pytest.mark.parametrize("filename,module", _get_modules_to_test("01_basics"))
def test_1_basics(self, filename, module):
assert module.main
module.main()
@pytest.mark.parametrize("filename,module", _get_modules_to_test("02_intermediate"))
def test_2_intermediate(self, filename, module):
assert module.main
module.main()
@pytest.mark.parametrize("filename,module", _get_modules_to_test("03_using_adapters", "parquet"))
def test_3_adapters_parquet(self, filename, module):
assert module.main
module.main()
@pytest.mark.parametrize("filename,module", _get_modules_to_test("04_writing_adapters"))
def test_4_writing_adapters(self, filename, module):
assert module.main
module.main()
@pytest.mark.parametrize("filename,module", _get_modules_to_test("06_advanced"))
def test_6_advanced(self, filename, module):
assert module.main
module.main()
@pytest.mark.parametrize("filename,module", _get_modules_to_test("98_just_for_fun"))
def test_98_just_for_fun(self, filename, module):
assert module.main
module.main()
@pytest.mark.parametrize("filename,module", _get_modules_to_test("99_developer_tools"))
def test_99_developer_tools(self, filename, module):
assert module.main
module.main()