mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-19 12:58:13 +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 typing as t
|
||||
from enum import IntEnum
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
import xdist
|
||||
from _pytest.python import IdMaker
|
||||
from _pytest.reports import TestReport
|
||||
|
||||
from trezorlib import debuglink, log, models
|
||||
@ -464,6 +466,15 @@ def pytest_configure(config: "Config") -> None:
|
||||
if config.getoption("verbose"):
|
||||
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:
|
||||
"""Called for each test item (class, individual tests).
|
||||
|
Loading…
Reference in New Issue
Block a user