Spec tests #88
Workflow file for this run
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: | |
# Triggers the workflow on push or pull request events but only for the master branch | |
push: | |
branches: [ master, develop, spec_tests ] | |
pull_request: | |
branches: [ master, develop, spec_tests ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
nano-build: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest | |
strategy: | |
matrix: | |
sdk: | |
- path: $NANOS_SDK | |
name: nanos | |
- path: $NANOX_SDK | |
name: nanox | |
- path: $NANOSP_SDK | |
name: nanosp | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Build application for SDK ${{ matrix.sdk.name }} | |
run: | | |
make clean | |
make BOLOS_SDK=${{ matrix.sdk.path }} | |
- name: Upload app binary | |
uses: actions/upload-artifact@v2 | |
with: | |
name: app | |
path: bin | |
scan-build: | |
name: Clang Static Analyzer | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest | |
steps: | |
- uses: actions/checkout@v2 | |
- 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@v2 | |
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:latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build testing binaries | |
run: | | |
mkdir tests/speculos/elfs | |
make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOS_SDK && mv bin/app.elf tests/speculos/elfs/nanos.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"] | |
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 |