nolock 0.4.1

A collection of Lock-Free Datastructures
Documentation
name: Testing/Linting

on: [push]

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - name: Check out
        uses: actions/checkout@v2
      - name: Setting up Rust-Toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          default: true
          override: true
      - name: Run tests
        run: cargo test --features hash_trie --features async

  clippy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Setting up Rust-Toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          components: clippy
          default: true
          override: true
      - name: Run Clippy
        run: cargo clippy --

  miri_queues:
    name: Test Queues (Miri)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Cargo + Miri
        run: |
          MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)
          echo "Installing latest nightly with Miri: $MIRI_NIGHTLY"
          rustup set profile minimal
          rustup override set "$MIRI_NIGHTLY"
          rustup component add miri
      - name: Run Miri
        run: cargo miri test queues
  miri_hazard_ptr:
    name: Test Hazard-Pointer (Miri)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Cargo + Miri
        run: |
          MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)
          echo "Installing latest nightly with Miri: $MIRI_NIGHTLY"
          rustup set profile minimal
          rustup override set "$MIRI_NIGHTLY"
          rustup component add miri
      - name: Run Miri
        run: cargo miri test hazard_ptr
  miri_thread_data:
    name: Test Thread-Data (Miri)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Cargo + Miri
        run: |
          MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)
          echo "Installing latest nightly with Miri: $MIRI_NIGHTLY"
          rustup set profile minimal
          rustup override set "$MIRI_NIGHTLY"
          rustup component add miri
      - name: Run Miri
        run: cargo miri test thread_data
  miri_allocator:
    name: Test Allocator (Miri)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Cargo + Miri
        run: |
          MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)
          echo "Installing latest nightly with Miri: $MIRI_NIGHTLY"
          rustup set profile minimal
          rustup override set "$MIRI_NIGHTLY"
          rustup component add miri
      - name: Run Miri
        env:
          # This is needed because some parts of the Allocator are never dropped and therefore also never
          # get Freed properly causing miri to detect them as memory leaks
          MIRIFLAGS: "-Zmiri-ignore-leaks"
        run: cargo miri test allocator