readcon-core 0.14.5

An oxidized single and multiple CON file reader and writer with FFI bindings for ergonomic C/C++ usage.
Documentation
name: Basic tests

on:
  push:
    branches: [main]
  pull_request:

concurrency:
  group: btest_rust-${{ github.ref }}
  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

jobs:
  btest_rust:
    runs-on: ubuntu-22.04
    name: Run basic tests and build

    steps:
      - uses: actions/checkout@v6

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Setup sccache
        uses: mozilla-actions/sccache-action@v0.0.9
        with:
          version: "v0.10.0"

      - name: Setup sccache environment
        run: |
          echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV
          echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV

      - name: Install Meson, Ninja, Valgrind
        run: |
          python -m pip install meson ninja
          sudo snap install valgrind --classic
          sudo apt-get update && sudo apt-get install -y libc6-dbg --fix-missing

      - name: C/C++ distribution gate
        run: bash scripts/check-cxx-dist.sh

      - name: Run Rust tests
        run: cargo test

      - name: Surface grammar (PEG companion)
        # grammar is optional (not on hot path); still gate PR lockstep with prose/spec.
        run: cargo test --features grammar --lib grammar

      - name: Build and test FFI bindings
        id: btest_rust
        run: |
          meson setup bbdir \
          -Dwith_tests=False \
          -Dwith_cpp=True \
          -Dwith_examples=True \
          --buildtype=release
          meson test -C bbdir --print-errorlogs \
          --wrap="valgrind --leak-check=full --show-leak-kinds=definite,indirect,possible --track-origins=yes --error-exitcode=1 --suppressions=$GITHUB_WORKSPACE/valgrind.supp --gen-suppressions=all"

  header-check:
    runs-on: ubuntu-22.04
    name: Shipped C header matches cbindgen
    steps:
      - uses: actions/checkout@v6
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
      - name: Install cbindgen
        run: cargo install cbindgen --locked || cargo install cbindgen
      - name: Verify shipped C header matches cbindgen output
        run: scripts/regen-capi-headers.sh --check