Skip to content

fix version test

fix version test #351

Workflow file for this run

name: Compilation & tests
on: [push, pull_request]
jobs:
job_build_application:
name: Build application using the reusable workflow
uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1
with:
upload_app_binaries_artifact: "compiled_app_binaries"
job_unit_test:
name: Unit tests
runs-on: ubuntu-latest
container:
image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest
steps:
- name: Clone
uses: actions/checkout@v4
- name: Build unit tests
run: |
cd unit-tests/
cmake -Bbuild -H. && make -C build
- name: Run unit tests
run: |
cd unit-tests/
make -C build test
- name: Generate code coverage
run: |
cd unit-tests/
lcov --directory . -b "$(realpath build/)" --capture --initial -o coverage.base && \
lcov --rc lcov_branch_coverage=1 --directory . -b "$(realpath build/)" --capture -o coverage.capture && \
lcov --directory . -b "$(realpath build/)" --add-tracefile coverage.base --add-tracefile coverage.capture -o coverage.info && \
lcov --directory . -b "$(realpath build/)" --remove coverage.info '*/unit-tests/*' -o coverage.info && \
genhtml coverage.info -o coverage
- uses: actions/upload-artifact@v4
with:
name: code-coverage
path: unit-tests/coverage
- name: Upload to codecov.io
if: false
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./unit-tests/coverage.info
flags: unittests
name: codecov-app-ergo
fail_ci_if_error: true
verbose: true
job_generate_doc:
name: Generate project documentation
runs-on: ubuntu-latest
container:
image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest
steps:
- name: Clone
uses: actions/checkout@v4
- name: HTML documentation
run: doxygen .doxygen/Doxyfile
- uses: actions/upload-artifact@v4
with:
name: documentation
path: doc/html
job_scan_build:
name: Clang Static Analyzer
runs-on: ubuntu-latest
strategy:
matrix:
include:
- SDK: "$NANOSP_SDK"
- SDK: "$STAX_SDK"
container:
image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest
steps:
- name: Clone
uses: actions/checkout@v4
- name: Build with Clang Static Analyzer
run: |
export BOLOS_SDK=${{ matrix.SDK }}
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
- name: Upload scan result
uses: actions/upload-artifact@v4
if: failure()
with:
name: scan-build
path: scan-build
job_test:
name: Functional Tests
strategy:
matrix:
include:
- model:
id: nanox
dir: nanox
- model:
id: nanosp
dir: nanos2
needs: job_build_application
runs-on: ubuntu-latest
container:
image: ghcr.io/ledgerhq/speculos:latest
ports:
- 5000:5000
- 9999:9999
options: --entrypoint /bin/bash
steps:
- name: Clone
uses: actions/checkout@v4
- name: Download app binary
uses: actions/download-artifact@v4
with:
name: compiled_app_binaries
path: bin
- name: Run test
run: |
apt-get update && apt-get install -qy curl netcat-traditional
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
apt-get install -qy nodejs
export SEED=`cat tests/seed.txt`
nohup bash -c "python /speculos/speculos.py bin/${{ matrix.model.dir }}/bin/app.elf --apdu-port 9999 --api-port 5000 --display headless --model=${{ matrix.model.id }} --seed \"${SEED}\"" > speculos.log 2<&1 &
cd tests && npm install
until `nc -w5 -z -v 127.0.0.1 9999`; do sleep 1; done;
npm --model=${{matrix.model.id}} --port=5000 run test
- name: Upload Speculos log
uses: actions/upload-artifact@v4
with:
name: speculos-${{matrix.model.id}}-log
path: speculos.log