Change our mypy configuration to disallow untyped defs by default, which ensures *new* files added to the code base are fully typed. To avoid having to type-annotate everything now, add `# mypy: allow-untyped-defs` to files which are not fully type annotated yet. As we fully type annotate those modules, we can then just remove that directive from the top.
55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
# mypy: allow-untyped-defs
|
|
import pprint
|
|
from typing import List
|
|
from typing import Tuple
|
|
|
|
import pytest
|
|
|
|
|
|
def pytest_generate_tests(metafunc):
|
|
if "arg1" in metafunc.fixturenames:
|
|
metafunc.parametrize("arg1", ["arg1v1", "arg1v2"], scope="module")
|
|
|
|
if "arg2" in metafunc.fixturenames:
|
|
metafunc.parametrize("arg2", ["arg2v1", "arg2v2"], scope="function")
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def checked_order():
|
|
order: List[Tuple[str, str, str]] = []
|
|
|
|
yield order
|
|
pprint.pprint(order)
|
|
assert order == [
|
|
("issue_519.py", "fix1", "arg1v1"),
|
|
("test_one[arg1v1-arg2v1]", "fix2", "arg2v1"),
|
|
("test_one[arg1v1-arg2v2]", "fix2", "arg2v2"),
|
|
("test_two[arg1v1-arg2v1]", "fix2", "arg2v1"),
|
|
("test_two[arg1v1-arg2v2]", "fix2", "arg2v2"),
|
|
("issue_519.py", "fix1", "arg1v2"),
|
|
("test_one[arg1v2-arg2v1]", "fix2", "arg2v1"),
|
|
("test_one[arg1v2-arg2v2]", "fix2", "arg2v2"),
|
|
("test_two[arg1v2-arg2v1]", "fix2", "arg2v1"),
|
|
("test_two[arg1v2-arg2v2]", "fix2", "arg2v2"),
|
|
]
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def fix1(request, arg1, checked_order):
|
|
checked_order.append((request.node.name, "fix1", arg1))
|
|
yield "fix1-" + arg1
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def fix2(request, fix1, arg2, checked_order):
|
|
checked_order.append((request.node.name, "fix2", arg2))
|
|
yield "fix2-" + arg2 + fix1
|
|
|
|
|
|
def test_one(fix2):
|
|
pass
|
|
|
|
|
|
def test_two(fix2):
|
|
pass
|