mirror of
https://github.com/fluencelabs/aquavm
synced 2025-03-15 20:40:50 +00:00
Use custom JSON value type with Rc inside. It cannot be edited, but producing new values based on child element is very cheap. This new type is used exclusively in AquaVM internals. Interface APIs use serde_json's Value or JSON strings, as before. --------- Co-authored-by: raftedproc <71657594+raftedproc@users.noreply.github.com>
105 lines
3.4 KiB
YAML
105 lines
3.4 KiB
YAML
name: Run tests with workflow_call
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
ref:
|
|
description: "git ref to checkout to"
|
|
type: string
|
|
default: "master"
|
|
cargo-dependencies:
|
|
description: "Cargo dependencies map"
|
|
type: string
|
|
default: "null"
|
|
|
|
jobs:
|
|
tests:
|
|
name: "cargo nextest"
|
|
timeout-minutes: 60
|
|
runs-on: builder
|
|
|
|
permissions:
|
|
checks: write # for coverall to create checks
|
|
|
|
steps:
|
|
- name: Checkout AquaVM
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: fluencelabs/aquavm
|
|
ref: ${{ inputs.ref }}
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: dsherret/rust-toolchain-file@v1
|
|
|
|
- name: Setup marine
|
|
uses: fluencelabs/setup-marine@v1
|
|
with:
|
|
artifact-name: marine
|
|
|
|
- name: Set dependencies
|
|
if: inputs.cargo-dependencies != 'null'
|
|
uses: fluencelabs/github-actions/cargo-set-dependency@main
|
|
with:
|
|
dependencies: ${{ inputs.cargo-dependencies }}
|
|
|
|
- name: Build Wasm binary for tests
|
|
run: ./build_test_binaries.sh
|
|
working-directory: air/tests/test_module
|
|
|
|
- uses: taiki-e/install-action@cargo-llvm-cov
|
|
- uses: taiki-e/install-action@nextest
|
|
|
|
- name: Setup risczero
|
|
uses: brndnmtthws/rust-action-cargo-binstall@v1
|
|
with:
|
|
packages: cargo-risczero
|
|
|
|
- run: cargo clean
|
|
- run: cargo risczero install
|
|
- run: cargo build
|
|
|
|
- name: Run cargo nextest
|
|
# It should have "--all-features", but it is temporarly disabled because of the signature-related feature flags
|
|
run: cargo llvm-cov nextest --no-default-features --features test_with_native_code --release --profile ci --lcov --output-path lcov.info
|
|
|
|
- name: Coveralls upload
|
|
if: inputs.cargo-dependencies == 'null'
|
|
uses: coverallsapp/github-action@v2
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
file: lcov.info
|
|
|
|
- name: Archive code coverage results
|
|
if: inputs.cargo-dependencies == 'null' && !github.event.pull_request.head.repo.fork
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: code-coverage-report.zip
|
|
path: lcov.info
|
|
|
|
- name: Upload test report
|
|
uses: dorny/test-reporter@v1
|
|
if: (success() || failure()) && !github.event.pull_request.head.repo.fork
|
|
with:
|
|
name: aquavm report
|
|
path: target/nextest/ci/junit.xml
|
|
reporter: java-junit
|
|
|
|
- name: Run tests with test_with_native_code
|
|
env:
|
|
RUST_TEST_THREADS: 1
|
|
run: |
|
|
# The `memory` sanitizer on cargo test has false positive even on empty project.
|
|
# It shouldn't have `--no-default-features`, but it has until legacy tests will work with signatures enabled.
|
|
for san in address leak; do
|
|
RUSTFLAGS="$RUSTFLAGS -Z sanitizer=$san" cargo test --no-default-features --features test_with_native_code --target x86_64-unknown-linux-gnu --tests
|
|
done
|
|
- name: Run signature tests with test_with_native_code
|
|
env:
|
|
RUST_TEST_THREADS: 1
|
|
run: |
|
|
# Temporary solution until legacy tests work with signatures.
|
|
cargo test --features test_with_native_code,gen_signatures,check_signatures --target x86_64-unknown-linux-gnu features::signatures
|
|
|
|
- name: Check native aquavm-air-cli
|
|
run: cargo check --package aquavm-air-cli --no-default-features
|