Skip to content

Add example warduino test to CI #47

Add example warduino test to CI

Add example warduino test to CI #47

Workflow file for this run

name: Tests
on: [ push ]
jobs:
build-wabt:
name: Build WAT tools
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Get WABT commit ID
working-directory: tests/unit/artifacts/wabt
run: echo "WABT_VERSION=$(git rev-parse HEAD)" >> $GITHUB_ENV
- name: Cache wabt
uses: actions/cache@v4
id: cache-wabt
with:
key: ${{ runner.os }}-wabt-${{ env.WABT_VERSION }}
path: tests/unit/artifacts/wabt
restore-keys: |
${{ runner.os }}-wabt-
- name: Build WABT # Build latest version
if: steps.cache-wabt.outputs.cache-hit == false
working-directory: tests/unit/artifacts/wabt
run: |
mkdir build; cd build
cmake ..
cmake --build .
- name: Upload built tools
uses: actions/upload-artifact@v4
with:
name: wabt-build-${{ github.run_id }}
path: tests/unit/artifacts/wabt/build
build-wdcli:
name: Build WARDuino CLI
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Get WDCLI commit ID
working-directory: tests/unit/artifacts/warduino
run: echo "WDCLI_VERSION=$(git rev-parse HEAD)" >> $GITHUB_ENV
- name: Cache WARDuino CLI
uses: actions/cache@v4
id: cache-warduino
with:
key: ${{ runner.os }}-warduino-${{ env.WDCLI_VERSION }}
path: tests/unit/artifacts/warduino
restore-keys: |
${{ runner.os }}-warduino-
- name: Build WARDuino CLI # Build latest version
if: steps.cache-warduino.outputs.cache-hit == false
working-directory: tests/unit/artifacts/warduino
run: |
mkdir build; cd build
cmake .. -D BUILD_EMULATOR=ON
cmake --build .
- name: Upload built tools
uses: actions/upload-artifact@v4
with:
name: warduino-build-${{ github.run_id }}
path: tests/unit/artifacts/warduino/build
unit:
name: Unit tests
runs-on: ubuntu-latest
needs: build-wabt
strategy:
fail-fast: false
if: github.event.pull_request.draft == false
steps:
- uses: actions/checkout@v4
- run: npm i
- name: Prebuild files
run: npm run test:prebuild
- name: Download WAT tools
uses: actions/download-artifact@v4
with:
name: wabt-build-${{ github.run_id }}
path: .tools
- name: Verify tools
run: |
chmod u+x $GITHUB_WORKSPACE/.tools/*
$GITHUB_WORKSPACE/.tools/wasm-objdump --version
- name: Run ava unit tests
run: npm run test:ava
env:
WABT: ${GITHUB_WORKSPACE}/.tools
warduino:
name: WARDuino test
runs-on: ubuntu-latest
needs: [build-wabt, build-wdcli]
strategy:
fail-fast: false
if: github.event.pull_request.draft == false
steps:
- uses: actions/checkout@v4
- run: npm i
- name: Prebuild files
run: npm run test:prebuild
- name: Download WAT tools
uses: actions/download-artifact@v4
with:
name: wabt-build-${{ github.run_id }}
path: .tools
- name: Download WARDuino
uses: actions/download-artifact@v4
with:
name: warduino-build-${{ github.run_id }}
path: .warduino
- name: Verify
run: |
chmod u+x $GITHUB_WORKSPACE/.tools/*
chmod u+x $GITHUB_WORKSPACE/.warduino/wdcli
$GITHUB_WORKSPACE/.tools/wasm-objdump --version
$GITHUB_WORKSPACE/.warduino/wdcli --version
- name: Run example WARDuino test
run: npm run test:example
env:
WABT: ${GITHUB_WORKSPACE}/.tools
EMULATOR: ${GITHUB_WORKSPACE}/.warduino/wdcli
coverage:
name: Code coverage
runs-on: ubuntu-latest
needs: build-wabt
strategy:
fail-fast: true
if: github.event.pull_request.draft == false
steps:
- uses: actions/checkout@v4
- run: npm i
- name: Prebuild files
run: npm run test:prebuild
- name: Download WAT tools
uses: actions/download-artifact@v4
with:
name: wabt-build-${{ github.run_id }}
path: .tools
- name: Verify tools
run: |
chmod u+x $GITHUB_WORKSPACE/.tools/*
$GITHUB_WORKSPACE/.tools/wasm-objdump --version
- name: Add .tools to PATH
run: echo "$GITHUB_WORKSPACE/.tools" >> $GITHUB_PATH
- name: Run c8 coverage
run: |
echo "LINE_COVERAGE=$(npm run coverage:test:ava | grep -E '^\s*Lines\s*:\s*[0-9]+(\.[0-9]+)?%' | awk '{print $3}' | tr -d '%')" >> $GITHUB_ENV
- name: Report coverage
run: npx c8 report
- name: Update coverage badge
uses: schneegans/[email protected]
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: 615b7906cd71effb447c4b08673d2cb6
filename: latch-coverage.json
label: Coverage
message: ${{ env.LINE_COVERAGE }}
valColorRange: ${{ env.LINE_COVERAGE }}
maxColorRange: 100
minColorRange: 0