| 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 |