mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-25 17:09:44 +00:00
feat(tests): add test for supporting older python versions
This commit is contained in:
parent
6589f020c6
commit
9ca9720f22
3
Makefile
3
Makefile
@ -92,6 +92,9 @@ ruststyle_check:
|
|||||||
@echo [RUSTFMT]
|
@echo [RUSTFMT]
|
||||||
@cd core/embed/rust ; cargo fmt -- --check
|
@cd core/embed/rust ; cargo fmt -- --check
|
||||||
|
|
||||||
|
python_support_check:
|
||||||
|
./tests/test_python_support.py
|
||||||
|
|
||||||
## code generation commands:
|
## code generation commands:
|
||||||
|
|
||||||
mocks: ## generate mock python headers from C modules
|
mocks: ## generate mock python headers from C modules
|
||||||
|
@ -623,6 +623,13 @@ python test:
|
|||||||
# https://github.com/NixOS/nixpkgs/pull/98915
|
# https://github.com/NixOS/nixpkgs/pull/98915
|
||||||
- nix-shell --arg fullDeps true --run "unset _PYTHON_SYSCONFIGDATA_NAME && cd python && poetry run tox | ts -s"
|
- nix-shell --arg fullDeps true --run "unset _PYTHON_SYSCONFIGDATA_NAME && cd python && poetry run tox | ts -s"
|
||||||
|
|
||||||
|
python support test:
|
||||||
|
stage: test
|
||||||
|
<<: *gitlab_caching
|
||||||
|
needs: []
|
||||||
|
script:
|
||||||
|
- nix-shell --run "poetry run make python_support_check | ts -s"
|
||||||
|
|
||||||
|
|
||||||
# Storage
|
# Storage
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ Bitcoin-only version.
|
|||||||
## TEST stage - [test.yml](../../ci/test.yml)
|
## TEST stage - [test.yml](../../ci/test.yml)
|
||||||
All the tests run test cases on the freshly built emulators from the previous `BUILD` stage.
|
All the tests run test cases on the freshly built emulators from the previous `BUILD` stage.
|
||||||
|
|
||||||
Consists of **34 jobs** below:
|
Consists of **35 jobs** below:
|
||||||
|
|
||||||
### [core unit test](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L15)
|
### [core unit test](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L15)
|
||||||
Python and rust unit tests, checking TT functionality.
|
Python and rust unit tests, checking TT functionality.
|
||||||
@ -219,11 +219,13 @@ Persistence tests.
|
|||||||
|
|
||||||
### [python test](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L600)
|
### [python test](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L600)
|
||||||
|
|
||||||
### [storage test](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L629)
|
### [python support test](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L626)
|
||||||
|
|
||||||
### [core unix memory profiler](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L653)
|
### [storage test](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L636)
|
||||||
|
|
||||||
### [connect test core](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L677)
|
### [core unix memory profiler](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L660)
|
||||||
|
|
||||||
|
### [connect test core](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml#L684)
|
||||||
|
|
||||||
---
|
---
|
||||||
## TEST-HW stage - [test-hw.yml](../../ci/test-hw.yml)
|
## TEST-HW stage - [test-hw.yml](../../ci/test-hw.yml)
|
||||||
|
60
tests/test_python_support.py
Executable file
60
tests/test_python_support.py
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Verifying that all the tools can be run even by older python versions.
|
||||||
|
|
||||||
|
Uses `pyright --pythonversion 3.X <path>` output to check for substrings that
|
||||||
|
indicate the type-hints in the code are not compatible with this version.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
HERE = Path(__file__).resolve().parent
|
||||||
|
ROOT_DIR = HERE.parent
|
||||||
|
|
||||||
|
EXIT_CODE = 0
|
||||||
|
|
||||||
|
os.chdir(ROOT_DIR)
|
||||||
|
|
||||||
|
versions_to_check = [
|
||||||
|
"3.7",
|
||||||
|
"3.8",
|
||||||
|
"3.9",
|
||||||
|
]
|
||||||
|
|
||||||
|
dirs_to_check = [
|
||||||
|
"tools",
|
||||||
|
"common",
|
||||||
|
"core/tools",
|
||||||
|
]
|
||||||
|
|
||||||
|
signs_of_issues = [
|
||||||
|
"is unknown import symbol", # we need to import some stuff from typing_extensions instead of typing
|
||||||
|
"will generate runtime exception", # happens when using `dict` or `list` as a type alias
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def check_directory(path: str, python_version: str) -> None:
|
||||||
|
global EXIT_CODE
|
||||||
|
cmd = (
|
||||||
|
"pyright",
|
||||||
|
"--pythonversion",
|
||||||
|
python_version,
|
||||||
|
path,
|
||||||
|
)
|
||||||
|
|
||||||
|
result = subprocess.run(cmd, stdout=subprocess.PIPE, text=True)
|
||||||
|
for line in result.stdout.splitlines():
|
||||||
|
if any(sign in line for sign in signs_of_issues):
|
||||||
|
print(line)
|
||||||
|
EXIT_CODE = 1
|
||||||
|
|
||||||
|
|
||||||
|
for version in versions_to_check:
|
||||||
|
print(f"Checking python version {version}")
|
||||||
|
for dir_to_check in dirs_to_check:
|
||||||
|
check_directory(dir_to_check, version)
|
||||||
|
|
||||||
|
sys.exit(EXIT_CODE)
|
Loading…
Reference in New Issue
Block a user