dcap-qvl 0.4.0

This crate implements the quote verification logic for DCAP (Data Center Attestation Primitives) in pure Rust.
Documentation
name: Rust

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

env:
  CARGO_TERM_COLOR: always

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v6
    - name: Build
      run: cargo build --verbose
    - name: Run tests
      run: cargo test --verbose

  python-bindings:
    name: Build & Test Python bindings (unit)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Setup Python
        uses: actions/setup-python@v6
        with:
          python-version: "3.10"

      - name: Setup Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable

      - name: Install Python test dependencies
        run: |
          python -m pip install --upgrade pip
          python -m pip install maturin pytest pytest-asyncio

      - name: Build & install Python package (editable)
        run: |
          python -m pip install -e python-bindings

      - name: Run Python unit tests (no network)
        run: |
          pytest -q python-bindings/tests

  golang-bindings:
    name: Build & Test Go bindings (unit)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Setup Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable

      - name: Setup Go
        uses: actions/setup-go@v6
        with:
          go-version: "1.21"

      - name: Build Rust static library for Go bindings
        run: |
          cargo build --release --features go

      - name: Run Go unit tests
        working-directory: golang-bindings
        env:
          CGO_LDFLAGS: -L${{ github.workspace }}/target/release
        run: go test ./...

  golang-bindings-integration:
    name: Build & Test Go bindings (integration)
    runs-on: ubuntu-latest
    needs: golang-bindings
    steps:
      - uses: actions/checkout@v6

      - name: Setup Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable

      - name: Setup Go
        uses: actions/setup-go@v6
        with:
          go-version: "1.21"

      - name: Build Rust static library for Go bindings
        run: |
          cargo build --release --features go

      - name: Run Go integration tests
        working-directory: golang-bindings
        env:
          CGO_LDFLAGS: -L${{ github.workspace }}/target/release
        run: go test -tags integration -count=1 ./...

  wasm:
    name: Check WebAssembly target
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Add wasm32 target
        run: rustup target add wasm32-unknown-unknown
      - name: Check wasm32 build
        run: cargo check --target wasm32-unknown-unknown --features js

  format:
    name: Format code
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Format code
        run: cargo fmt --all -- --check

  clippy:
    name: Check code with clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Check code with clippy
        run: cargo clippy -- -D warnings

  clippy-cli:
    name: Check cli code with clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Check cli code with clippy
        run: cd cli && cargo clippy -- -D warnings