Skip to content

Staked collateral

Staked collateral #587

Workflow file for this run

name: Test
on:
push:
branches:
- main
pull_request:
branches:
- "*"
defaults:
run:
shell: bash
working-directory: .
env:
RUST_TOOLCHAIN: 1.75.0
SOLANA_CLI_VERSION: 1.18.11
ANCHOR_CLI_VERSION: 0.30.1
ANCHOR_SHA: e6d7dafe12da661a36ad1b4f3b5970e8986e5321
CARGO_TERM_COLOR: always
concurrency:
group: build-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Rust Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-common/
- uses: ./.github/actions/setup-anchor-cli/
# - uses: actions/cache@v2
# name: Cache Cargo registry + index
# id: cache-cargo-build
# with:
# path: |
# ~/.cargo/bin/
# ~/.cargo/registry/index/
# ~/.cargo/registry/cache/
# ~/.cargo/git/db/
# key: cargo-${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}
- run: cargo fmt -- --check
- run: ./scripts/lint.sh
test-unit:
name: Rust Unit Tests
runs-on: ubuntu-latest
# env:
# RUSTUP_TOOLCHAIN: stable
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-common/
- uses: ./.github/actions/setup-anchor-cli/
# - uses: actions/cache@v2
# name: Cache Cargo registry + index
# id: cache-cargo-build
# with:
# path: |
# ~/.cargo/bin/
# ~/.cargo/registry/index/
# ~/.cargo/registry/cache/
# ~/.cargo/git/db/
# key: cargo-${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}
- run: cargo test --lib
build-and-test-workspace:
name: Build And Test Anchor Programs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./.github/actions/setup-common/
- uses: ./.github/actions/setup-anchor-cli/
- uses: ./.github/actions/build-workspace/
- run: ./scripts/test-program.sh all --sane
shell: bash
fuzz:
name: Fuzz The marginfi Program
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: ./programs/marginfi/fuzz
steps:
- uses: actions/checkout@v3
# - name: cache dependencies
# uses: Swatinem/rust-cache@v2
- name: Install full rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly-2024-06-05
components: rust-src
- name: Run fuzz tests in fuzz dir
run: |
python ./generate_corpus.py
cargo install cargo-fuzz --locked
cargo +nightly-2024-06-05 fuzz run lend -Zbuild-std --strip-dead-code --no-cfg-fuzzing -- -max_total_time=300
- name: Pass after fuzzing
run: echo "Fuzzing completed"
localnet-test-marginfi:
name: Anchor localnet tests marginfi
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "20.10.0"
- uses: ./.github/actions/setup-common/
- uses: ./.github/actions/setup-anchor-cli/
- uses: ./.github/actions/build-workspace/
- name: Install Node.js dependencies
run: yarn install
- name: Build marginfi program
run: anchor build -p marginfi -- --no-default-features
- name: Build mocks program
run: anchor build -p mocks
# Handles extraneous (os error 2) that appears during testing in some versions of solana. See:
# https://solana.stackexchange.com/questions/1648/error-no-such-file-or-directory-os-error-2-error-from-anchor-test
- name: Run Anchor tests
run: |
set +e
anchor test --skip-build 2>&1 | tee test_output.log
ANCHOR_EXIT_CODE=$?
set -e
if grep -q "failing" test_output.log; then
echo "Real test failure detected."
exit 1
fi
if grep -q "No such file or directory (os error 2)" test_output.log; then
echo "Extraneous error detected, ignoring it..."
exit 0
fi
if [ $ANCHOR_EXIT_CODE -ne 0 ]; then
echo "Anchor test exited with code $ANCHOR_EXIT_CODE due to an unexpected error."
exit 1
else
echo "Test run completed successfully without extraneous errors."
exit 0
fi
# - name: Start Solana Test Validator
# run: |
# solana-test-validator --reset --limit-ledger-size 1000 \
# - name: Wait for Validator to Start
# run: sleep 60
# - name: Deploy Liquidity Incentive Program
# run: solana program deploy --program-id Lip1111111111111111111111111111111111111111 target/deploy/liquidity_incentive_program.so
# - name: Deploy Marginfi Program
# run: solana program deploy --program-id 2jGhuVUuy3umdzByFx8sNWUAaf5vaeuDm78RDPEnhrMr target/deploy/marginfi.so
# - name: Deploy Mocks Program
# run: solana program deploy --program-id 5XaaR94jBubdbrRrNW7DtRvZeWvLhSHkEGU3jHTEXV3C target/deploy/mocks.so