Add example warduino test to CI #47
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: 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 | |