ldk-node 0.7.0

A ready-to-go node implementation built using LDK.
Documentation
name: CI Checks - Rust Tests

on: [push, pull_request]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    strategy:
      matrix:
        platform: [
          ubuntu-latest,
          macos-latest,
          windows-latest,
          ]
        toolchain: [
          stable,
          beta,
          1.85.0, # Our MSRV
          ]
        include:
          - toolchain: stable
            check-fmt: true
            build-uniffi: true
            platform: ubuntu-latest
          - toolchain: stable
            platform: macos-latest
          - toolchain: stable
            platform: windows-latest
          - toolchain: 1.85.0
            msrv: true
    runs-on: ${{ matrix.platform }}
    steps:
      - name: Checkout source code
        uses: actions/checkout@v3
      - name: Install Rust ${{ matrix.toolchain }} toolchain
        run: |
          curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain ${{ matrix.toolchain }}
      - name: Check formatting on Rust ${{ matrix.toolchain }}
        if: matrix.check-fmt
        run: rustup component add rustfmt && cargo fmt --all -- --check
      - name: Set RUSTFLAGS to deny warnings
        if: "matrix.toolchain == 'stable'"
        run: echo "RUSTFLAGS=-D warnings" >> "$GITHUB_ENV"
      - name: Enable caching for bitcoind
        id: cache-bitcoind
        uses: actions/cache@v4
        with:
          path: bin/bitcoind-${{ runner.os }}-${{ runner.arch }}
          key: bitcoind-${{ runner.os }}-${{ runner.arch }}
      - name: Enable caching for electrs
        id: cache-electrs
        uses: actions/cache@v4
        with:
          path: bin/electrs-${{ runner.os }}-${{ runner.arch }}
          key: electrs-${{ runner.os }}-${{ runner.arch }}
      - name: Download bitcoind/electrs
        if: "matrix.platform != 'windows-latest' && (steps.cache-bitcoind.outputs.cache-hit != 'true' || steps.cache-electrs.outputs.cache-hit != 'true')"
        run: |
          source ./scripts/download_bitcoind_electrs.sh
          mkdir bin
          mv "$BITCOIND_EXE" bin/bitcoind-${{ runner.os }}-${{ runner.arch }}
          mv "$ELECTRS_EXE" bin/electrs-${{ runner.os }}-${{ runner.arch }}
      - name: Set bitcoind/electrs environment variables
        run: |
          echo "BITCOIND_EXE=$( pwd )/bin/bitcoind-${{ runner.os }}-${{ runner.arch }}" >> "$GITHUB_ENV"
          echo "ELECTRS_EXE=$( pwd )/bin/electrs-${{ runner.os }}-${{ runner.arch }}" >> "$GITHUB_ENV"
      - name: Build on Rust ${{ matrix.toolchain }}
        run: cargo build --verbose --color always
      - name: Build with UniFFI support on Rust ${{ matrix.toolchain }}
        if: matrix.build-uniffi
        run: cargo build --features uniffi --verbose --color always
      - name: Build documentation on Rust ${{ matrix.toolchain }}
        if: "matrix.platform != 'windows-latest' || matrix.toolchain != '1.85.0'"
        run: |
          cargo doc --release --verbose --color always
          cargo doc --document-private-items --verbose --color always
      - name: Check release build on Rust ${{ matrix.toolchain }}
        run: cargo check --release --verbose --color always
      - name: Check release build with UniFFI support on Rust ${{ matrix.toolchain }}
        if: matrix.build-uniffi
        run: cargo check --release --features uniffi --verbose --color always
      - name: Test on Rust ${{ matrix.toolchain }}
        if: "matrix.platform != 'windows-latest'"
        run: |
          RUSTFLAGS="--cfg no_download" cargo test
      - name: Test with UniFFI support on Rust ${{ matrix.toolchain }}
        if: "matrix.platform != 'windows-latest' && matrix.build-uniffi"
        run: |
          RUSTFLAGS="--cfg no_download" cargo test --features uniffi