| name: CI |
| |
| on: |
| push: |
| pull_request: |
| schedule: [cron: "40 1 * * *"] |
| |
| permissions: |
| contents: read |
| |
| 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] |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v3 |
| - 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, 1.56.1, 1.53.0, 1.46.0, 1.40.0, 1.38.0, 1.36.0] |
| os: [ubuntu] |
| include: |
| - rust: stable |
| os: ubuntu |
| target: aarch64-unknown-none |
| - rust: stable |
| os: windows |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: dtolnay/rust-toolchain@master |
| with: |
| toolchain: ${{matrix.rust}} |
| targets: ${{matrix.target}} |
| - 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,arbitrary_precision |
| - 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.53.0' && matrix.rust != '1.46.0' && 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.53.0' && matrix.rust != '1.46.0' && 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: cargo check --manifest-path tests/crate/Cargo.toml --target ${{matrix.target}} --no-default-features --features alloc |
| if: matrix.target |
| |
| miri: |
| name: Miri |
| runs-on: ubuntu-latest |
| env: |
| MIRIFLAGS: -Zmiri-strict-provenance |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: dtolnay/rust-toolchain@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' |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v3 |
| - 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 |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: dtolnay/rust-toolchain@nightly |
| - run: cargo doc --features raw_value,unbounded_depth |
| env: |
| RUSTDOCFLAGS: --cfg docsrs |
| |
| fuzz: |
| name: Fuzz |
| runs-on: ubuntu-latest |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: dtolnay/rust-toolchain@nightly |
| - uses: dtolnay/install@cargo-fuzz |
| - run: cargo fuzz check |
| |
| outdated: |
| name: Outdated |
| runs-on: ubuntu-latest |
| if: github.event_name != 'pull_request' |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: dtolnay/install@cargo-outdated |
| - run: cargo outdated --workspace --exit-code 1 |
| - run: cargo outdated --manifest-path fuzz/Cargo.toml --exit-code 1 |