chia 0.17.0

A meta-crate that exports all of the Chia crates in the workspace.
Documentation
name: Tests

on:
  push:
    branches:
      - main
    tags:
      - "**"
  pull_request:
    branches:
      - "**"

concurrency:
  group: ${{ github.event_name == 'pull_request' && format('{0}-{1}', github.workflow_ref, github.event.pull_request.number) || github.run_id }}
  cancel-in-progress: true

jobs:
  tests:
    name: Unit Tests
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [macos-latest, ubuntu-latest, windows-latest]
        python-version: ["3.9", "3.10", "3.11"]

    env:
      stubtest_args: ${{ matrix.python-version == '3.11' && '--allowlist wheel/stubtest.allowlist.3-11-plus' || ''}}

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - uses: chia-network/actions/setup-python@main
        name: Install Python ${{ matrix.python-version }}
        with:
          python-version: ${{ matrix.python-version }}

      - name: Update pip
        run: |
          python -m pip install --upgrade pip

      - name: Set up rust
        uses: dtolnay/rust-toolchain@stable

      - name: setup venv
        run: |
          python -m venv venv

      - uses: chia-network/actions/activate-venv@main

      - name: Install dependencies
        run: |
          python -m pip install maturin
          rustup target add x86_64-unknown-linux-musl
          python -m pip install pytest pytest-xdist
          python -m pip install mypy
          python -m pip install black

      - name: Build
        run: |
          python -m pip install clvm_tools colorama blspy chia-blockchain==2.1.2 clvm==0.9.8
          maturin develop --release -m wheel/Cargo.toml

      - name: python mypy
        run: |
          mypy tests

      - name: python mypy stubtest
        shell: bash
        run: |
          FAILURE=0
          echo "::group::concise"
          if ! stubtest ${{ env.stubtest_args }} --allowlist wheel/stubtest.allowlist --concise chia_rs
          then
            FAILURE=1
          fi
          echo "::endgroup::"

          echo "::group::complete"
          if ! stubtest ${{ env.stubtest_args }} --allowlist wheel/stubtest.allowlist chia_rs
          then
            FAILURE=1
          fi
          echo "::endgroup::"

          exit ${FAILURE}

      - name: python black
        run: |
          black --check tests
          black --check wheel/generate_type_stubs.py

      - name: python tests
        run: |
          pytest tests

  generator-benchmarks:
    name: Generator performance
    runs-on: benchmark
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.10", "3.11"]

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - uses: chia-network/actions/setup-python@main
        name: Install Python ${{ matrix.python-version }}
        with:
          python-version: ${{ matrix.python-version }}

      - name: Set up rust
        uses: dtolnay/rust-toolchain@stable

      - name: setup venv
        run: |
          python -m venv venv

      - uses: chia-network/actions/activate-venv@main

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          python -m pip install maturin colorama clvm_tools
          rustup target add x86_64-unknown-linux-musl

      - name: Build
        run: |
          maturin develop --release -m wheel/Cargo.toml

      - name: test generators
        run: |
          cd tests
          ./test-generators.py

      - name: Run cost checks
        run: |
          cd tests
          ./generate-programs.py
          ./run-programs.py

  benchmarks:
    name: rust benchmarks
    runs-on: benchmark
    strategy:
      fail-fast: false

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Set up rust
        uses: dtolnay/rust-toolchain@stable

      - name: cargo bench
        run: |
          cargo bench --workspace --exclude chia_rs