Documentation
name: Tests

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

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Test default
      run: cargo test
    - name: Install nightly component
      run: rustup toolchain install nightly
    - name: Test default (dyn_unstable)
      run: cargo +nightly test --features dyn_unstable

  miri:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Install Miri
      run:  rustup +nightly component add miri
    - name: Test with Miri
      run: cargo +nightly miri test
    - name: Miri with strict provenance
      run: MIRIFLAGS="-Zmiri-strict-provenance" cargo +nightly miri test
    - name: Miri with symbolic alignment check
      run: MIRIFLAGS="-Zmiri-symbolic-alignment-check" cargo +nightly miri test
    - name: Miri with tree borrows
      run: MIRIFLAGS="-Zmiri-tree-borrows" cargo +nightly miri test
      
    - name: Test with Miri (dyn_unstable)
      run: cargo +nightly miri test --features dyn_unstable
    - name: Miri with strict provenance (dyn_unstable)
      run: MIRIFLAGS="-Zmiri-strict-provenance" cargo +nightly miri test --features dyn_unstable
    - name: Miri with symbolic alignment check (dyn_unstable)
      run: MIRIFLAGS="-Zmiri-symbolic-alignment-check" cargo +nightly miri test --features dyn_unstable
    - name: Miri with tree borrows (dyn_unstable)
      run: MIRIFLAGS="-Zmiri-tree-borrows" cargo +nightly miri test --features dyn_unstable
      
    - name: Test with Miri (serde)
      run: cargo +nightly miri test --features serde
    - name: Miri with strict provenance (serde)
      run: MIRIFLAGS="-Zmiri-strict-provenance" cargo +nightly miri test --features serde
    - name: Miri with symbolic alignment check (serde)
      run: MIRIFLAGS="-Zmiri-symbolic-alignment-check" cargo +nightly miri test --features serde
    - name: Miri with tree borrows (serde)
      run: MIRIFLAGS="-Zmiri-tree-borrows" cargo +nightly miri test --features serde
      
    - name: Test with Miri (stable_deref_trait)
      run: cargo +nightly miri test --features stable_deref_trait
    - name: Miri with strict provenance (stable_deref_trait)
      run: MIRIFLAGS="-Zmiri-strict-provenance" cargo +nightly miri test --features stable_deref_trait
    - name: Miri with symbolic alignment check (stable_deref_trait)
      run: MIRIFLAGS="-Zmiri-symbolic-alignment-check" cargo +nightly miri test --features stable_deref_trait
    - name: Miri with tree borrows (stable_deref_trait)
      run: MIRIFLAGS="-Zmiri-tree-borrows" cargo +nightly miri test --features stable_deref_trait

  typos:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Install Typo
      run: cargo install typos-cli
    - name: Run Typos
      run: typos