1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-15 20:19:23 +00:00
trezor-firmware/ci/test.yml
Martin Milata 41bf9201b5 ci: do not rely on TREZOR_PATH, use switch ports instead
As the connected Trezors can be left in various weird states, trezorctl
list may not always return what is expected or even fail. If it failed
TREZOR_PATH was set to empty string which means random device got
selected.

For now let's avoid using incorrect device by powering down the other
usb port.

Fix log lines ordering.
2021-02-05 12:58:21 +01:00

404 lines
9.2 KiB
YAML

image: registry.gitlab.com/satoshilabs/trezor/trezor-firmware/trezor-firmware-env.nix
# Core
core unit test:
stage: test
needs:
- core unix regular build
script:
- nix-shell --run "poetry run make -C core test"
core device ui test:
stage: test
needs:
- core unix frozen debug build
script:
- nix-shell --run "poetry run make -C core test_emu_ui"
after_script:
- mv tests/ui_tests/reporting/reports/test/ test_ui_report
- nix-shell --run "poetry run python ci/prepare_ui_artifacts.py"
- diff tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- ci/ui_test_records/
- test_ui_report
- tests/ui_tests/screens/
- tests/ui_tests/fixtures.suggestion.json
- tests/junit.xml
- tests/trezor.log
when: always
expire_in: 1 week
reports:
junit: tests/junit.xml
core device test:
stage: test
needs:
- core unix frozen debug build
variables:
TREZOR_PROFILING: 1
script:
- nix-shell --run "poetry run make -C core test_emu"
- mv core/src/.coverage core/.coverage.test_emu
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/trezor.log
- tests/junit.xml
- core/.coverage.*
expire_in: 1 week
when: always
reports:
junit: tests/junit.xml
core btconly device test:
stage: test
needs:
- core unix frozen btconly debug build
variables:
MICROPYTHON: "build/unix/trezor-emu-core-bitcoinonly"
TREZOR_PYTEST_SKIP_ALTCOINS: 1
script:
- nix-shell --run "poetry run make -C core test_emu"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/trezor.log
- tests/junit.xml
expire_in: 1 week
when: always
reports:
junit: tests/junit.xml
core monero test:
stage: test
needs:
- core unix frozen debug build
variables:
TREZOR_PROFILING: 1
script:
- nix-shell --arg fullDeps true --run "poetry run make -C core test_emu_monero"
- mv core/src/.coverage core/.coverage.test_emu_monero
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/trezor.log
- core/.coverage.*
expire_in: 1 week
when: always
core u2f test:
stage: test
needs:
- core unix frozen debug build
variables:
TREZOR_PROFILING: 1
script:
- nix-shell --run "poetry run make -C tests/fido_tests/u2f-tests-hid"
- nix-shell --run "poetry run make -C core test_emu_u2f"
- mv core/src/.coverage core/.coverage.test_emu_u2f
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/trezor.log
- core/.coverage.*
expire_in: 1 week
when: always
core fido2 test:
stage: test
needs:
- core unix frozen debug build
variables:
TREZOR_PROFILING: 1
script:
- pgrep trezor-emu-core || true
- nix-shell --run "poetry run make -C core test_emu_fido2"
- pgrep trezor-emu-core || true
- mv core/src/.coverage core/.coverage.test_emu_fido2
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/trezor.log
- tests/junit.xml
- core/.coverage.*
expire_in: 1 week
reports:
junit: tests/junit.xml
when: always
core click test:
stage: test
needs:
- core unix frozen debug build
script:
- nix-shell --run "poetry run make -C core test_emu_click"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/trezor.log
- tests/junit.xml
reports:
junit: tests/junit.xml
expire_in: 1 week
when: always
core upgrade test:
stage: test
needs:
- core unix frozen debug build
variables:
TREZOR_UPGRADE_TEST: "core"
script:
- nix-shell --run "tests/download_emulators.sh"
- nix-shell --run "poetry run pytest --junitxml=tests/junit.xml tests/upgrade_tests"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/junit.xml
reports:
junit: tests/junit.xml
expire_in: 1 week
when: always
core persistence test:
stage: test
needs:
- core unix frozen debug build
script:
- nix-shell --run "poetry run pytest --junitxml=tests/junit.xml tests/persistence_tests"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/junit.xml
reports:
junit: tests/junit.xml
expire_in: 1 week
when: always
# Crypto
crypto test:
stage: test
only:
changes:
- .gitlab-ci.yml
- ci/**/*
- crypto/**/*
needs:
- crypto build
script:
- ./crypto/tests/aestst
- ./crypto/tests/test_check
- ./crypto/tests/test_openssl 1000
- nix-shell --run "cd crypto && ITERS=10 poetry run pytest --junitxml=tests/junit.xml tests"
- nix-shell --run "CK_TIMEOUT_MULTIPLIER=20 valgrind -q --error-exitcode=1 ./crypto/tests/test_check"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/junit.xml
reports:
junit: tests/junit.xml
expire_in: 1 week
when: always
# Legacy
legacy test:
stage: test
needs:
- legacy emu regular debug build
variables:
EMULATOR: "1"
script:
- nix-shell --run "poetry run legacy/script/test"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/junit.xml
reports:
junit: tests/junit.xml
expire_in: 1 week
when: always
legacy btconly test:
stage: test
needs:
- legacy emu btconly debug build
variables:
EMULATOR: "1"
EMULATOR_BINARY: "firmware/trezor-bitcoinonly.elf"
TREZOR_PYTEST_SKIP_ALTCOINS: 1
script:
- nix-shell --run "poetry run legacy/script/test"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/junit.xml
reports:
junit: tests/junit.xml
expire_in: 1 week
when: always
legacy upgrade test:
stage: test
needs:
- legacy emu regular debug build
variables:
TREZOR_UPGRADE_TEST: "legacy"
script:
- nix-shell --run "tests/download_emulators.sh"
- nix-shell --run "poetry run pytest --junitxml=tests/junit.xml tests/upgrade_tests"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/junit.xml
reports:
junit: tests/junit.xml
expire_in: 1 week
when: always
# Python
python test:
stage: test
needs: []
variables:
LC_ALL: "C.UTF-8"
LANG: "C.UTF-8"
only:
changes:
- poetry.lock
- .gitlab-ci.yml
- ci/**/*
- common/**/*
- python/**/*
script:
- nix-shell --arg fullDeps true --run "cd python && poetry run tox"
# Storage
storage test:
stage: test
only:
changes:
- .gitlab-ci.yml
- ci/**/*
- storage/**/*
needs: []
script:
- nix-shell --run "poetry run make -C storage/tests build"
- nix-shell --run "poetry run make -C storage/tests tests_all"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/junit.xml
reports:
junit: tests/junit.xml
expire_in: 1 week
when: always
# Hardware
hardware core btconly device test:
stage: test
only:
- schedules # nightly build
- /^legacy\//
- /^release\//
- /^secfix\//
- /^hw\//
tags:
- tpmb
needs:
- core fw btconly debug build
variables:
TREZOR_PYTEST_SKIP_ALTCOINS: 1
PYTEST_TIMEOUT: "1200"
script:
- cd ci/hardware_tests
- nix-shell --run "cd ../.. && poetry install"
- nix-shell --run "poetry run python bootstrap.py tt ../../trezor-*.bin"
- nix-shell --run "poetry run pytest ../../tests/device_tests -m 'not sd_card' -k 'not 15_of_15 and not test_multisig_mismatch_inputs'"
timeout: 4h
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
expire_in: 2 days
when: always
hardware legacy regular device test:
stage: test
only:
- schedules # nightly build
- /^legacy\//
- /^release\//
- /^secfix\//
- /^hw\//
tags:
- tpmb
needs:
- legacy fw regular debug build
script:
- cd ci/hardware_tests
- nix-shell --run "./t1_hw_test.sh"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- ci/hardware_tests/*.mp4
expire_in: 2 days
when: always
hardware legacy btconly device test:
stage: test
variables:
TREZOR_PYTEST_SKIP_ALTCOINS: 1
only:
- schedules # nightly build
- /^legacy\//
- /^release\//
- /^secfix\//
- /^hw\//
tags:
- tpmb
needs:
- legacy fw btconly debug build
script:
- cd ci/hardware_tests
- nix-shell --run "./t1_hw_test.sh"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- ci/hardware_tests/*.mp4
expire_in: 2 days
when: always
# Memory profiling
core unix memory profiler:
stage: test
when: manual
needs: []
variables:
PYOPT: "0"
TREZOR_MEMPERF: "1"
PYTEST_TIMEOUT: "900"
script:
- nix-shell --run "poetry run make -C core build_unix_frozen"
- nix-shell --run "poetry run make -C core test_emu"
- nix-shell --run "mkdir core/prof/memperf-html"
- nix-shell --run "poetry run core/tools/alloc.py --alloc-data=core/src/alloc_data.txt html core/prof/memperf-html"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- tests/trezor.log
- core/prof/memperf-html
expire_in: 1 week
when: always