name: Miri Tests on: push: # Run in PRs and for bors, but not on master. branches: - 'auto' - 'try' 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 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@v3 - 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 --test miri_stress -- --exact --nocapture cargo miri test --package dioxus-native-core --test miri_native -- --exact --nocapture # working-directory: tokio env: # todo: disable memory leaks ignore MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance -Zmiri-retag-fields -Zmiri-ignore-leaks 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 . # ~/.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