1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-18 05:28:40 +00:00
trezor-firmware/ci/test.yml

342 lines
8.3 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 "pipenv run make -C core test"
core device ui test:
stage: test
needs: ["core unix frozen debug build"]
script:
- nix-shell --run "pipenv run make -C core test_emu_ui"
after_script:
- mv tests/ui_tests/reporting/reports/test/ test_ui_report
- nix-shell --run "pipenv run python ci/prepare_ui_artifacts.py"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- ci/ui_test_records/
- test_ui_report
- tests/ui_tests/screens/
- 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 "pipenv 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 "pipenv 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 --run "pipenv 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 "pipenv run make -C tests/fido_tests/u2f-tests-hid"
- nix-shell --run "pipenv 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 "pipenv 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 "pipenv 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 "pipenv 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 "pipenv 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:
- 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 pipenv 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 "pipenv 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 "pipenv 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 "pipenv 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:
- Pipfile.lock
- poetry.lock
- ci/**/*
- common/**/*
- python/**/*
script:
- nix-shell --run "cd python && pipenv run tox"
# Storage
storage test:
stage: test
only:
changes:
- ci/**/*
- storage/**/*
needs: []
script:
- nix-shell --run "pipenv run make -C storage/tests build"
- nix-shell --run "pipenv 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 legacy regular device test:
stage: test
only:
- schedules # nightly build
- /^legacy\//
- /^release\//
- /^secfix\//
tags:
- tpmb
needs: ["legacy fw regular debug build"]
script:
- cd ci/hardware_tests
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} start"
- nix-shell --run "cd ../.. && pipenv sync"
- nix-shell --run "pipenv run python bootstrap.py"
- nix-shell --run "pipenv run python bootstrap.py ../../trezor-*.bin"
- nix-shell --run "pipenv run pytest ../../tests/device_tests"
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} stop"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- ci/hardware_tests/video*.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\//
tags:
- tpmb
needs: ["legacy fw btconly debug build"]
script:
- cd ci/hardware_tests
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} start"
- nix-shell --run "cd ../.. && pipenv sync"
- nix-shell --run "pipenv run python bootstrap.py"
- nix-shell --run "pipenv run python bootstrap.py ../../trezor-*.bin"
- nix-shell --run "pipenv run pytest ../../tests/device_tests"
- nix-shell --run "./record_video.sh ${CI_COMMIT_SHORT_SHA} stop"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_SHORT_SHA"
paths:
- ci/hardware_tests/video*.mp4
expire_in: 2 days
when: always