mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-19 21:08:07 +00:00
fix(tests): python >=3.11 compatibility for identifiers
Python 3.11 changed IntEnum.__str__ to return the number instead of the enum value name. This breaks fixtures.json because pytest uses str(value) to generate the test identifier names, and in a lot of places our identifiers use the enum values. This override of `_idval_from_value` explicitly generates a name from the IntEnum instead of using the __str__ implementation.
This commit is contained in:
parent
8129086aa7
commit
b9a104d2ac
@ -18,10 +18,12 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import typing as t
|
import typing as t
|
||||||
|
from enum import IntEnum
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import xdist
|
import xdist
|
||||||
|
from _pytest.python import IdMaker
|
||||||
from _pytest.reports import TestReport
|
from _pytest.reports import TestReport
|
||||||
|
|
||||||
from trezorlib import debuglink, log, models
|
from trezorlib import debuglink, log, models
|
||||||
@ -464,6 +466,15 @@ def pytest_configure(config: "Config") -> None:
|
|||||||
if config.getoption("verbose"):
|
if config.getoption("verbose"):
|
||||||
log.enable_debug_output()
|
log.enable_debug_output()
|
||||||
|
|
||||||
|
idval_orig = IdMaker._idval_from_value
|
||||||
|
|
||||||
|
def idval_from_value(self: IdMaker, val: object) -> str | None:
|
||||||
|
if isinstance(val, IntEnum):
|
||||||
|
return f"{type(val).__name__}.{val.name}"
|
||||||
|
return idval_orig(self, val)
|
||||||
|
|
||||||
|
IdMaker._idval_from_value = idval_from_value
|
||||||
|
|
||||||
|
|
||||||
def pytest_runtest_setup(item: pytest.Item) -> None:
|
def pytest_runtest_setup(item: pytest.Item) -> None:
|
||||||
"""Called for each test item (class, individual tests).
|
"""Called for each test item (class, individual tests).
|
||||||
|
Loading…
Reference in New Issue
Block a user