halfin 0.4.0

A {regtest} bitcoin node runner 🏃‍♂️
Documentation
name: Cross-Testing

on:
    push:
      branches: [ master ]
    pull_request:
    workflow_dispatch:

permissions: {}
env:
    CARGO_TERM_COLOR: always
    RUST_BACKTRACE: 1

jobs:
    build:
        name: ${{ matrix.os }} + ${{ matrix.arch }}
        runs-on: ${{ matrix.runner }}
        strategy:
            fail-fast: false
            matrix:
                include:
                    - runner: macos-latest
                      target: aarch64-apple-darwin
                      os: MacOS
                      arch: Apple Silicon (ARM64)

                    - runner: ubuntu-latest
                      target: x86_64-unknown-linux-gnu
                      os: Linux
                      arch: x86_64

                    - runner: ubuntu-24.04-arm
                      target: aarch64-unknown-linux-gnu
                      os: Linux
                      arch: ARM64

                    - runner: windows-2022
                      target: x86_64-pc-windows-msvc
                      os: Windows
                      arch: x86_64

        steps:
            - name: Checkout Repository
              uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.3.0
              with:
                  persist-credentials: false

            - name: Setup Build Cache
              uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

            - name: Install Rust Toolchain
              if: runner.os == 'Windows'
              uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 # v1.94.1
              with:
                  toolchain: stable
                  targets: ${{ matrix.target }}

            - name: Setup cargo-rbmt
              if: runner.os != 'Windows'
              uses: ./.github/actions/setup-rbmt

            - name: Install ${{ matrix.target }} Toolchain
              if: runner.os != 'Windows'
              shell: bash
              run: rustup target add --toolchain "$(cargo rbmt toolchains --stable)" ${{ matrix.target }}

            - name: Run Tests for ${{ matrix.target }} Target
              if: runner.os != 'Windows'
              run: cargo rbmt test --toolchain stable --lock-file recent -- --target ${{ matrix.target }} --no-fail-fast

            - name: Run Tests for ${{ matrix.target }} Target
              if: runner.os == 'Windows'
              env:
                  TEMPDIR_ROOT: ${{ github.workspace }}\target\test-tmp
              run: >
                  New-Item -ItemType Directory -Force $env:TEMPDIR_ROOT;
                  cargo test --target ${{ matrix.target }} --no-fail-fast --no-default-features --features bitcoind_31_0,utreexod_0_5_2
                  && cargo test --target ${{ matrix.target }} --no-fail-fast --no-default-features --features bitcoind_31_0,electrs_0_11_1