Ivan Boldyrev 0d53f2bab1
feat(execution-engine): Rc-based JSON value (#813)
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>
2024-02-13 19:11:21 +07:00

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