# -*- coding: utf-8 -*- 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]) ] assignments = [ (getattr(package, f"Assignment{day(part)}", None), 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 and hasattr(package, "__path__") and Assignment.example_result != NotImplemented ], ids=lambda assignment: str(assignment), )