Speculos tests #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
- develop | |
workflow_dispatch: | |
jobs: | |
scan-build: | |
name: Clang Static Analyzer | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build with Clang Static Analyzer | |
run: | | |
make clean | |
scan-build --use-cc=clang -analyze-headers -enable-checker security -enable-checker unix -enable-checker valist -o scan-build --status-bugs make default | |
- uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: scan-build | |
path: scan-build | |
# ===================================================== | |
# SPECULOS TESTS | |
# ===================================================== | |
building_for_e2e_speculos_tests: | |
name: Building binaries for E2E Speculos tests | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build testing binaries | |
run: | | |
mkdir tests/speculos/elfs | |
make clean && make -j DEBUG=1 BOLOS_SDK=$NANOS_SDK && mv bin/app.elf tests/speculos/elfs/nanos.elf | |
make clean && make -j DEBUG=1 BOLOS_SDK=$NANOX_SDK && mv bin/app.elf tests/speculos/elfs/nanox.elf | |
make clean && make -j DEBUG=1 BOLOS_SDK=$NANOSP_SDK && mv bin/app.elf tests/speculos/elfs/nanosp.elf | |
- name: Upload app binaries | |
uses: actions/upload-artifact@v3 | |
with: | |
name: e2e_speculos_elfs | |
path: ./tests/speculos/elfs | |
jobs-e2e-speculos-tests: | |
name: Speculos tests | |
strategy: | |
fail-fast: false | |
matrix: | |
model: ["nanos", "nanox", "nanosp"] | |
needs: [building_for_e2e_speculos_tests] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone | |
uses: actions/checkout@v3 | |
- name: Create tmp folder for artifacts | |
run: mkdir tests/speculos/elfs | |
- name: Download app binaries | |
uses: actions/download-artifact@v3 | |
with: | |
path: tmp/ | |
- name: Gather elfs | |
run: cp `find tmp/e2e_speculos_elfs/ -name "*.elf"` tests/speculos/elfs/ | |
- name: Install dependencies | |
run: | | |
cd tests/speculos | |
sudo apt-get update && sudo apt-get install -y qemu-user-static | |
pip install -r requirements.txt | |
- name: Run speculos tests | |
run: | | |
cd tests/speculos | |
pytest --model ${{ matrix.model }} --path ./elfs/${{ matrix.model }}.elf --display headless |