diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..88d967f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,66 @@ +name: CI + +on: [push, pull_request] + +jobs: + test: + name: Test Suite + runs-on: ubuntu-latest + strategy: + matrix: + rust: + - 1.19.0 # Oldest supported (first version with numeric fields in struct patterns) + - 1.20.0 # Oldest supported with tuple_ty + - 1.31.0 # Oldest supported with allow(clippy) + - 1.36.0 # Oldest supported with MaybeUninit + - 1.40.0 # Oldest supported with cfg(doctest) + - 1.51.0 # Oldest supported with ptr::addr_of! + - stable + - beta + - nightly + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + - name: Run cargo test + run: cargo test + + nightly: + name: Test Suite (nightly features) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + override: true + - name: Run cargo test + # `--lib` prevents doctests from being run. + # This is due to `unstable_const` requiring extra `feature(...)` directives + # which the doctests do not have. + run: cargo test --all-features --lib + + miri: + name: Test Suite (Miri) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Test with Miri + run: ci/miri.sh + + style: + name: lints and formatting + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: 1.51.0 # pin a version for reproducible results + components: rustfmt + override: true + - name: Check warnings + run: RUSTFLAGS="-D warnings" cargo check --all-targets + - name: Check formatting + run: cargo fmt -- --check diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d3c4d65..0000000 --- a/.travis.yml +++ /dev/null @@ -1,50 +0,0 @@ -sudo: false -language: rust -cache: - cargo: true -matrix: - include: - - name: miri - env: TRAVIS_MIRI_JOB # make sure the cache is not shared with other "nightly" jobs - rust: nightly - script: - - sh ci/miri.sh - - - rust: 1.19.0 # Oldest supported (first version with numeric fields in struct patterns) - - rust: 1.20.0 # Oldest supported with tuple_ty - - rust: 1.31.0 # Oldest supported with allow(clippy) - - rust: 1.36.0 # Oldest supported with MaybeUninit - - rust: 1.40.0 # Oldest supported with cfg(doctest) - - rust: 1.51.0 # Oldest supported with ptr::addr_of! - - rust: stable - - rust: beta - - rust: nightly - - - name: all-features - rust: nightly - script: - # `--lib` added to prevent doctests from being compiled. - # This is due to `unstable_const` requiring extra `feature(...)` directives - # which the doctests do not have. - - cargo test --verbose --all-features --lib - - - name: rustfmt - rust: 1.36.0 - install: - - rustup component add rustfmt - script: - - cargo fmt -- --check - - - name: deny-warnings - env: RUSTFLAGS="-D warnings" - rust: 1.33.0 # `stable`: Locking down for consistent behavior - script: - - cargo check --tests - -install: -- rustc -Vv -- cargo -V - -script: -- rm -rf target/debug/deps/*memoffset* # Avoid rustdoc problems -- cargo test --verbose diff --git a/ci/miri.sh b/ci/miri.sh old mode 100644 new mode 100755