tpm2 0.1.0

Core types and traits for communicating with a TPM 2.0
Documentation
name: Continuous integration

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustc --version
      - run: cargo check

  test:
    name: Test Suite
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustc --version
      - run: cargo test

  integration_test:
    name: Client Integration Test Suite
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Build container and run simulator tests in it
        run: cd client && docker compose build && docker compose run simulator_tests

  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustc --version
      - run: cargo fmt --all -- --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustc --version
      - run: cargo clippy --all-targets --all-features -- -D warnings

  docs:
    name: Docs
    runs-on: ubuntu-latest
    env:
      RUSTDOCFLAGS: "-D warnings"
    steps:
      - uses: actions/checkout@v4
      - run: rustc --version
      - run: cargo doc

  miri:
    name: Miri UB Test Suite
    runs-on: ubuntu-latest
    env:
      RUSTDOCFLAGS: "-D warnings"
    steps:
      - uses: actions/checkout@v4
      - run: rustup component add miri --toolchain nightly
      - run: rustc +nightly --version
      # trybuild uses stat systemcall which is not supported by miri
      - run: cargo +nightly miri test -- --skip unionify