mrrc 0.9.0

A Rust library for reading, writing, and manipulating MARC bibliographic records in ISO 2709 binary format
Documentation
name: Tests

on:
  # No paths-ignore here: these jobs are required status checks on the main
  # ruleset. A workflow skipped by a path filter never reports its check, which
  # leaves the required check pending forever and makes the PR unmergeable.
  push:
    branches: [main]
  pull_request:
    branches: [main]

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: 1

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    name: Test Suite (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    # All three OSes on every run: platform-sensitive paths (from_path,
    # file I/O, the rayon pipeline) get Rust-level coverage on macOS and
    # Windows instead of relying on the Python wheel suite alone.
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-2025]
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v6.0.3

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

      - name: Cache cargo
        uses: Swatinem/rust-cache@v2

      - name: Run library and integration tests
        run: cargo test --lib --tests --package mrrc --verbose

      - name: Run doc tests
        run: cargo test --doc --package mrrc --verbose

      - name: Build examples
        run: cargo build --examples --verbose