simfony 0.1.0

Rust-like language that compiles to Simplicity bytecode.
Documentation
name: Test
on:
  push:
  pull_request:
jobs:
  check-flake:
    name: Check flake
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install nix
      uses: cachix/install-nix-action@v24
      with:
        github_access_token: ${{ secrets.GITHUB_TOKEN }}

    - name: Check flake
      run: nix flake check --all-systems

  test-stable:
    name: Test - stable toolchain
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]

    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install nix
      uses: cachix/install-nix-action@v24
      with:
        github_access_token: ${{ secrets.GITHUB_TOKEN }}

    - name: Enable Rust cache
      uses: Swatinem/rust-cache@v2

    - name: Run all checks
      run: |
        nix develop .#ci --command bash -c "just check"

  test-msrv:
    name: Test - MSRV toolchain
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install nix
      uses: cachix/install-nix-action@v24
      with:
        github_access_token: ${{ secrets.GITHUB_TOKEN }}

    - name: Enable Rust cache
      uses: Swatinem/rust-cache@v2

    - name: Run unit tests
      run: |
        nix develop .#msrv --command bash -c "just test"

  test-fuzz:
    name: Test - fuzzer
    runs-on: ubuntu-latest
    needs: test-stable
    strategy:
      matrix:
        fuzz_target:
          - compile_parse_tree
          - compile_text
          - display_parse_tree
          - parse_value_rtt
          - parse_witness_json_rtt
          - parse_witness_module_rtt
          - reconstruct_value
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install nix
      uses: cachix/install-nix-action@v24
      with:
        github_access_token: ${{ secrets.GITHUB_TOKEN }}

    - name: Enable Rust cache
      uses: Swatinem/rust-cache@v2

    - name: Run fuzz target ${{ matrix.fuzz_target }}
      run: |
        nix develop .#fuzz --command bash -c "just fuzz ${{ matrix.fuzz_target }}"

  build-integration:
    name: Build - integration tests
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install nix
      uses: cachix/install-nix-action@v24
      with:
        github_access_token: ${{ secrets.GITHUB_TOKEN }}

    - name: Enable Rust cache
      uses: Swatinem/rust-cache@v2

    - name: Build each integration test
      run: |
        nix develop .#ci --command bash -c "just build_integration"

  build-wasm:
    name: Build - WASM
    runs-on: ubuntu-latest
    needs: test-stable

    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install nix
      uses: cachix/install-nix-action@v24
      with:
        github_access_token: ${{ secrets.GITHUB_TOKEN }}

    - name: Enable Rust cache
      uses: Swatinem/rust-cache@v2

    - name: Build WASM library
      run: |
        nix develop .#wasm --command bash -c "just build_wasm"