summaryrefslogtreecommitdiffstats
path: root/conftest.py
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@glootie.lan.tomvanderlee.com>2023-11-19 16:55:03 +0100
committerGravatar Tom van der Lee <tom@glootie.lan.tomvanderlee.com>2023-11-19 16:55:03 +0100
commit4147da1317c19fa61d6aa265e8370e63231f9207 (patch)
tree316925e780126c97fb10342e3175fd0e6b0aa3fb /conftest.py
download2023-4147da1317c19fa61d6aa265e8370e63231f9207.tar.gz
2023-4147da1317c19fa61d6aa265e8370e63231f9207.tar.bz2
2023-4147da1317c19fa61d6aa265e8370e63231f9207.zip
Initial commit
Diffstat (limited to 'conftest.py')
-rw-r--r--conftest.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/conftest.py b/conftest.py
new file mode 100644
index 0000000..1c0a8e4
--- /dev/null
+++ b/conftest.py
@@ -0,0 +1,36 @@
1# -*- coding: utf-8 -*-
2import importlib
3import os
4from pkgutil import walk_packages
5
6from _pytest.python import Metafunc
7
8from aoc.__main__ import day
9
10dir_path = os.path.dirname(os.path.realpath(__file__))
11
12
13def pytest_generate_tests(metafunc: Metafunc):
14 if "assignment" in metafunc.fixturenames:
15 packages = [
16 importlib.import_module(package.name)
17 for package in walk_packages([dir_path])
18 ]
19
20 assignments = [
21 (getattr(package, f"Assignment{day(part)}", None), package)
22 for package in packages
23 for part in ["1", "2"]
24 ]
25
26 metafunc.parametrize(
27 argnames=f"assignment",
28 argvalues=[
29 Assignment(path=package.__path__[0])
30 for (Assignment, package) in assignments
31 if Assignment is not None
32 and hasattr(package, "__path__")
33 and Assignment.example_result != NotImplemented
34 ],
35 ids=lambda assignment: str(assignment),
36 )