name: integration test shader reflection

on:
  pull_request:
    branches: [ "master" ]
env:
  CARGO_TERM_COLOR: always

jobs:
  approve-full-test:
    name: "approval"
    runs-on: ubuntu-latest
    steps:
      - name: Approve
        run: echo Full test suite for PRs needs approval by a maintainer
  test-presets:
    runs-on: ubuntu-latest
    continue-on-error: false
    environment:
      name: full-test
    needs: [approve-full-test]
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Install nightly Rust
        uses: dtolnay/rust-toolchain@nightly
        with:
          toolchain: nightly
      - name: Test preset processing
        run: cargo test -p librashader --features=github-ci --test reflect -- --nocapture preprocess_all_slang_presets_parsed
  test-naga:
    runs-on: ubuntu-latest
    continue-on-error: false
    environment:
      name: full-test
    needs: [ approve-full-test ]
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Install nightly Rust
        uses: dtolnay/rust-toolchain@nightly
        with:
          toolchain: nightly
      - name: Test Naga reflection
        run: cargo test -p librashader --features=github-ci --test reflect -- --nocapture compile_all_slang_presets_wgsl_naga compile_all_slang_presets_msl_naga compile_all_slang_presets_spirv_naga
  test-cross:
    runs-on: ubuntu-latest
    continue-on-error: false
    environment:
      name: full-test
    needs: [ approve-full-test ]
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Install nightly Rust
        uses: dtolnay/rust-toolchain@nightly
        with:
          toolchain: nightly
      - name: Test SPIRV-Cross
        run: cargo test -p librashader --features=github-ci --test reflect -- --nocapture compile_all_slang_presets_msl_cross compile_all_slang_presets_glsl_cross compile_all_slang_presets_hlsl_cross compile_all_slang_presets_spirv_cross
  test-dxil:
    runs-on: windows-latest
    continue-on-error: false
    environment:
      name: full-test
    needs: [ approve-full-test ]
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Install nightly Rust
        uses: dtolnay/rust-toolchain@nightly
        with:
          toolchain: nightly
      - name: Test DXIL
        run: cargo test -p librashader --features=github-ci --test reflect -- --nocapture compile_all_slang_presets_dxil_cross