diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..7c7aba1 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,55 @@ +name: Rust + +on: + push: + paths-ignore: + - '**.md' + pull_request: + paths-ignore: + - '**.md' + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + strategy: + matrix: + include: + - name: windows-latest + runs-on: windows-latest + self-hosted: true + - name: ubuntu-latest + runs-on: ubuntu-latest + self-hosted: false + - name: macos-latest + runs-on: macos-latest + self-hosted: false + fail-fast: false + name: ${{ matrix.name }} + runs-on: ${{ matrix.runs-on }} + steps: + - uses: actions/checkout@v3 + - run: rustup toolchain install stable + - name: Run tests + run: cargo test --verbose + linux_miri: + name: Miri + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install Miri + run: | + rustup toolchain install nightly --component miri + rustup override set nightly + cargo miri setup + - name: Run tests with Miri + run: cargo miri test + linux_thread_sanitizer: + name: ThreadSanitizer + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: rustup toolchain install nightly --component rust-src + - name: Run tests with ThreadSanitizer + run: RUSTFLAGS="-Zsanitizer=thread" cargo +nightly test -Zbuild-std --target x86_64-unknown-linux-gnu