123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- name: Miri Tests
- on:
- push:
- # Run in PRs and for bors, but not on master.
- branches:
- - 'auto'
- - 'try'
- paths:
- - packages/**
- - examples/**
- - src/**
- - .github/**
- - lib.rs
- - Cargo.toml
- pull_request:
- types: [opened, synchronize, reopened, ready_for_review]
- branches:
- - 'master'
- schedule:
- - cron: '6 6 * * *' # At 6:06 UTC every day.
- env:
- CARGO_UNSTABLE_SPARSE_REGISTRY: 'true'
- RUSTFLAGS: -Dwarnings
- RUST_BACKTRACE: 1
- # Change to specific Rust release to pin
- rust_stable: stable
- rust_nightly: nightly-2022-11-03
- rust_clippy: 1.65.0
- # When updating this, also update:
- # - README.md
- # - tokio/README.md
- # - CONTRIBUTING.md
- # - tokio/Cargo.toml
- # - tokio-util/Cargo.toml
- # - tokio-test/Cargo.toml
- # - tokio-stream/Cargo.toml
- # rust_min: 1.49.0
- concurrency:
- group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
- cancel-in-progress: true
- jobs:
- test:
- runs-on: ${{ matrix.os }}
- env:
- RUST_BACKTRACE: 1
- HOST_TARGET: ${{ matrix.host_target }}
- strategy:
- fail-fast: false
- matrix:
- include:
- - os: ubuntu-latest
- host_target: x86_64-unknown-linux-gnu
- # - os: macos-latest
- # host_target: x86_64-apple-darwin
- # - os: windows-latest
- # host_target: i686-pc-windows-msvc
- # - os: windows-latest
- # host_target: i686-pc-windows-msvc
- # - os: windows-latest
- # host_target: i686-pc-windows-msvc
- # - os: windows-latest
- # host_target: i686-pc-windows-msvc
- steps:
- - name: Set the tag GC interval to 1 on linux
- if: runner.os == 'Linux'
- run: echo "MIRIFLAGS=-Zmiri-tag-gc=1" >> $GITHUB_ENV
- - uses: actions/checkout@v4
- - name: Install Rust ${{ env.rust_nightly }}
- uses: dtolnay/rust-toolchain@master
- with:
- toolchain: ${{ env.rust_nightly }}
- components: miri
- - uses: Swatinem/rust-cache@v2
- - name: miri
- # Many of tests in tokio/tests and doctests use #[tokio::test] or
- # #[tokio::main] that calls epoll_create1 that Miri does not support.
- # run: cargo miri test --features full --lib --no-fail-fast
- run: |
- cargo miri test --package dioxus-core -- --exact --nocapture
- cargo miri test --package dioxus-native-core --test miri_native -- --exact --nocapture
- # working-directory: tokio
- env:
- MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance -Zmiri-retag-fields
- PROPTEST_CASES: 10
- # Cache the global cargo directory, but NOT the local `target` directory which
- # we cannot reuse anyway when the nightly changes (and it grows quite large
- # over time).
- # - name: Add cache for cargo
- # id: cache
- # uses: actions/cache@v3
- # with:
- # path: |
- # # Taken from <https://doc.rust-lang.org/nightly/cargo/guide/cargo-home.html#caching-the-cargo-home-in-ci>.
- # ~/.cargo/bin
- # ~/.cargo/registry/index
- # ~/.cargo/registry/cache
- # ~/.cargo/git/db
- # # contains package information of crates installed via `cargo install`.
- # ~/.cargo/.crates.toml
- # ~/.cargo/.crates2.json
- # key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- # restore-keys: ${{ runner.os }}-cargo
- # - name: Install rustup-toolchain-install-master
- # if: ${{ steps.cache.outputs.cache-hit != 'true' }}
- # shell: bash
- # run: |
- # cargo install -f rustup-toolchain-install-master
- # - name: Install "master" toolchain
- # shell: bash
- # run: |
- # if [[ ${{ github.event_name }} == 'schedule' ]]; then
- # echo "Building against latest rustc git version"
- # git ls-remote https://github.com/rust-lang/rust/ HEAD | cut -f 1 > rust-version
- # fi
- # toolchain --host ${{ matrix.host_target }}
- # - name: Show Rust version
- # run: |
- # rustup show
- # rustc -Vv
- # cargo -V
- # - name: Test
- # run: |
- # MIRIFLAGS="-Zmiri-disable-isolation -Zmiri-ignore-leaks" cargo +nightly miri test --package dioxus-core --test miri_stress -- --exact --nocapture
- # MIRIFLAGS="-Zmiri-disable-isolation -Zmiri-ignore-leaks" cargo +nightly miri test --package dioxus-native-core --test miri_native -- --exact --nocapture
|