diff options
Diffstat (limited to '.github/workflows/ci.yml')
-rw-r--r-- | .github/workflows/ci.yml | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b7e82ab --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,107 @@ +name: CI + +on: + push: + pull_request: + schedule: [cron: "40 1 * * *"] + +env: + RUSTFLAGS: -Dwarnings + +jobs: + test: + name: Rust nightly ${{matrix.os == 'windows' && '(windows)' || ''}} + runs-on: ${{matrix.os}}-latest + strategy: + fail-fast: false + matrix: + os: [ubuntu, windows] + steps: + - uses: actions/checkout@v2 + - uses: dtolnay/rust-toolchain@nightly + - run: cargo test + - run: cargo test --features preserve_order --tests -- --skip ui --exact + - run: cargo test --features float_roundtrip --tests -- --skip ui --exact + - run: cargo test --features arbitrary_precision --tests -- --skip ui --exact + - run: cargo test --features float_roundtrip,arbitrary_precision --tests -- --skip ui --exact + - run: cargo test --features raw_value --tests -- --skip ui --exact + - run: cargo test --features unbounded_depth --tests -- --skip ui --exact + + build: + name: Rust ${{matrix.rust}} ${{matrix.os == 'windows' && '(windows)' || ''}} + runs-on: ${{matrix.os}}-latest + strategy: + fail-fast: false + matrix: + rust: [beta, stable, 1.53.0, 1.46.0, 1.45.0, 1.40.0, 1.38.0, 1.36.0] + os: [ubuntu] + include: + - rust: stable + os: windows + steps: + - uses: actions/checkout@v2 + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{matrix.rust}} + - run: cargo check + - run: cargo check --features float_roundtrip + - run: cargo check --features arbitrary_precision + - run: cargo check --features raw_value + - run: cargo check --features unbounded_depth + - run: cargo check --manifest-path tests/crate/Cargo.toml --no-default-features --features alloc + - run: cargo check --manifest-path tests/crate/Cargo.toml --no-default-features --features alloc,raw_value + - run: cargo check --features preserve_order + if: matrix.rust != '1.45.0' && matrix.rust != '1.40.0' && matrix.rust != '1.38.0' && matrix.rust != '1.36.0' + - run: cargo check --manifest-path tests/crate/Cargo.toml --no-default-features --features alloc,preserve_order + if: matrix.rust != '1.45.0' && matrix.rust != '1.40.0' && matrix.rust != '1.38.0' && matrix.rust != '1.36.0' + - name: Build without std + run: | + rustup target add aarch64-unknown-none + cargo check \ + --manifest-path tests/crate/Cargo.toml \ + --target aarch64-unknown-none \ + --no-default-features \ + --features alloc + if: matrix.rust == 'stable' && matrix.os == 'ubuntu' + + miri: + name: Miri + runs-on: ubuntu-latest + env: + MIRIFLAGS: "-Zmiri-tag-raw-pointers" + steps: + - uses: actions/checkout@v2 + - uses: dtolnay/rust-toolchain@nightly + with: + components: miri + - run: cargo miri test + - run: cargo miri test --features preserve_order,float_roundtrip,arbitrary_precision,raw_value + + clippy: + name: Clippy + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' + steps: + - uses: actions/checkout@v2 + - uses: dtolnay/rust-toolchain@clippy + - run: cargo clippy --tests -- -Dclippy::all -Dclippy::pedantic + - run: cargo clippy --all-features --tests -- -Dclippy::all -Dclippy::pedantic + + docs: + name: Documentation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: dtolnay/rust-toolchain@nightly + - run: cargo doc --features raw_value,unbounded_depth + env: + RUSTDOCFLAGS: --cfg docsrs + + fuzz: + name: Fuzz + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: dtolnay/rust-toolchain@nightly + - run: cargo install cargo-fuzz --debug + - run: cargo fuzz build -O |