magicblock-delegation-program 1.2.0

Delegation program for the Ephemeral Rollups
Documentation
name: Run Tests
on:
  push:
    branches:
      - main
  pull_request:

env:
  solana_version: v3.1.5
  anchor_version: 0.31.1

jobs:
  install:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        name: cache solana cli
        id: cache-solana
        with:
          path: |
            ~/.cache/solana/
            ~/.local/share/solana/
          key: solana-${{ runner.os }}-v0000-${{ env.solana_version }}

      - name: install essentials
        run: |
          sudo apt-get update
          sudo apt-get install -y pkg-config build-essential libudev-dev
          npm install --global yarn

      - name: install rust
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: stable

      - name: Cache rust
        uses: Swatinem/rust-cache@v2

      - name: install solana
        if: steps.cache-solana.outputs.cache-hit != 'true'
        run: |
          sh -c "$(curl -sSfL https://release.anza.xyz/${{ env.solana_version }}/install)"
          export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
          solana --version

  lint:
    needs: install
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Run fmt
        run: rustup component add --toolchain nightly-x86_64-unknown-linux-gnu rustfmt && cargo +nightly fmt -- --check
      - name: Run clippy
        run: cargo clippy -- --deny=warnings

  test:
    needs: [install, lint]
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        name: cache solana cli
        id: cache-solana
        with:
          path: |
            ~/.cache/solana/
            ~/.local/share/solana/
          key: solana-${{ runner.os }}-v0000-${{ env.solana_version }}

      - name: setup solana
        run: |
          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
          solana --version
          solana-keygen new --silent --no-bip39-passphrase

      - name: run build
        run: |
          cargo build

      - name: run tests (dlp-api cargo test)
        run: |
          cd dlp-api
          cargo test

      - name: run tests (cargo test-sbf)
        run: |
          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
          cargo test-sbf --features unit_test_config

      - name: compile production version for integration tests
        run: |
          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
          cargo build-sbf

      - name: clean up before integration tests
        run: |
          cp target/deploy/dlp.so /tmp/dlp.so
          rm -rf target
          mkdir -p target/deploy && cp /tmp/dlp.so target/deploy/dlp.so
          rm -rf ~/.cache
          rm -rf ~/.cargo/registry
          df -h

      - name: run integration tests
        run: |
          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
          cd tests/integration 
          cargo install --locked --version ${{ env.anchor_version }} anchor-cli
          npm install
          anchor test