aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/ci.yml')
-rw-r--r--.github/workflows/ci.yml107
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