summaryrefslogtreecommitdiffstats
path: root/conftest.py
blob: 3bae1e2ceebf74fb5e1641895600a23d36cd48d3 (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
import importlib
import os
from pkgutil import walk_packages

from _pytest.python import Metafunc

from aoc.__main__ import day

dir_path = os.path.dirname(os.path.realpath(__file__))

def pytest_generate_tests(metafunc: Metafunc):
    if 'assignment' in metafunc.fixturenames:
        packages = [
            importlib.import_module(package.name)
            for package
            in walk_packages([dir_path])
            if package.name.startswith('day')
        ]

        assignments = [
            (getattr(package, f'Assignment{day(part)}'), package)
            for package in packages
            for part in ['1', '2']
        ]

        metafunc.parametrize(
            argnames=f'assignment',
            argvalues=[
                Assignment(path=package.__path__[0])
                for (Assignment, package)
                in assignments
                if Assignment is not None
            ],
            ids=lambda assignment: str(assignment)
        )