miniscript 12.2.0

Miniscript: a subset of Bitcoin Script designed for analysis
Documentation
---   # rust-miniscript CI: If you edit this file please update README.md
on:   # yamllint disable-line rule:truthy
  push:
    branches:
      - master
      - 'test-ci/**'
  pull_request:

name: Continuous integration

jobs:
  Stable:                       # 2 jobs, one per lock file.
    name: Test - stable toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [minimal, recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@stable
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh stable

  Nightly:                      # 2 jobs, one per lock file.
    name: Test - nightly toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [minimal, recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@nightly
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh nightly

  MSRV:                         # 1 jobs, minimal lock file only.
    name: Test - 1.56.1 toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [minimal]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: "1.56.1"
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh msrv

  Lint:
    name: Lint - nightly toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@nightly
      - name: "Install clippy"
        run: rustup component add clippy
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh lint

  Docs:
    name: Docs - stable toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@stable
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh docs

  Docsrs:
    name: Docs - nightly toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@nightly
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh docsrs

  Bench:
    name: Bench - nightly toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@nightly
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh bench

  Format:                       #  1 jobs, run cargo fmt directly.
    name: Format - nightly toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@nightly
      - name: "Install rustfmt"
        run: rustup component add rustfmt
      - name: "Check formatting"
        run: cargo +nightly fmt --all -- --check

  Int-tests:
    name: Integration tests
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Crate
        uses: actions/checkout@v2
      - name: Checkout Toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - name: Running integration tests
        run: ./contrib/integration_test.sh

  Embedded:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up QEMU
        run: sudo apt update && sudo apt install -y qemu-system-arm gcc-arm-none-eabi
      - name: Checkout Toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: rust-src
          target: thumbv7m-none-eabi
      - name: Run
        env:
          RUSTFLAGS: "-C link-arg=-Tlink.x"
          CARGO_TARGET_THUMBV7M_NONE_EABI_RUNNER: "qemu-system-arm -cpu cortex-m3 -machine mps2-an385 -nographic -semihosting-config enable=on,target=native -kernel"
        run: cd embedded && cargo run --target thumbv7m-none-eabi --release