• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1on:
2  push:
3    branches: [ master ]
4  pull_request:
5    branches: [ master ]
6
7name: CI
8
9jobs:
10  ci:
11    runs-on: ubuntu-latest
12    strategy:
13      fail-fast: false
14      matrix:
15        rust:
16          - 1.36.0  # MSRV
17          - stable
18          - beta
19          - nightly
20        features:
21          - ""
22          - "serde"
23
24    steps:
25      - name: Checkout
26        uses: actions/checkout@v3
27
28      - name: Set up Rust
29        uses: dtolnay/rust-toolchain@master
30        with:
31          toolchain: ${{ matrix.rust }}
32
33      - name: MSRV dependencies
34        if: matrix.rust == '1.36.0'
35        run: |
36          cargo generate-lockfile
37          cargo update -p serde_json --precise 1.0.99
38          cargo update -p serde --precise 1.0.156
39          cargo update -p quote --precise 1.0.30
40          cargo update -p proc-macro2 --precise 1.0.65
41
42      - name: Build (no_std)
43        run: cargo build --no-default-features
44
45      - name: Build
46        run: cargo build --features "${{ matrix.features }}"
47
48      - name: Test
49        run: cargo test --features "${{ matrix.features }}"
50
51      - name: Doc
52        run: cargo doc --features "${{ matrix.features }}"
53
54  clippy:
55    name: Rustfmt and Clippy
56    runs-on: ubuntu-latest
57    steps:
58      - name: Checkout
59        uses: actions/checkout@v3
60
61      - name: Set up nightly Rust
62        uses: dtolnay/rust-toolchain@nightly
63        with:
64          components: rustfmt, clippy
65
66      - name: Rustfmt
67        run: cargo fmt --all -- --check
68
69      - name: Clippy
70        run: cargo clippy  # -- -D warnings
71