name: "Lazer Solana contract test"
on:
  push:
    branches:
      - main
  pull_request:
    paths:
      - lazer/**
      - .github/workflows/ci-lazer-solana-contract.yml

jobs:
  lazer-solana-contract-test:
    name: Lazer Solana contract test
    runs-on: ubuntu-22.04
    defaults:
      run:
        working-directory: lazer/contracts/solana
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: 1.81.0
      - name: install taplo
        run: cargo install --locked taplo-cli@0.9.3
      - uses: actions/setup-node@v4
        with:
          node-version-file: "package.json"
      # Libusb is a build requirement for the node-hid package and so pnpm
      # install will fail if this isn't in the build environment and if a
      # precompiled binary isn't found.
      - name: Install libusb
        run: sudo apt-get update && sudo apt-get install -y libusb-1.0-0-dev libudev-dev
      - uses: pnpm/action-setup@v4
        name: Install pnpm
        with:
          run_install: true
      - name: Install Solana Cli
        run: |
          sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"
          echo "$HOME/.local/share/solana/install/active_release/bin" >> "$GITHUB_PATH"
      - name: Set Solana Cli version
        run: agave-install init 1.18.26
      - name: Create Solana key
        run: solana-keygen new --no-bip39-passphrase
      - name: Install Anchor
        run: |
          rustup install 1.79.0
          RUSTFLAGS= cargo +1.79.0 install --git https://github.com/coral-xyz/anchor --tag v0.30.1 --locked anchor-cli
      - name: Run anchor tests
        run: pnpm run test:anchor
