1name: CI
2
3on:
4  push:
5  pull_request:
6  schedule: [cron: "40 1 * * *"]
7
8env:
9  RUSTFLAGS: '-Dwarnings'
10
11jobs:
12  test:
13    name: Rust ${{matrix.rust}}
14    runs-on: ubuntu-latest
15    strategy:
16      fail-fast: false
17      matrix:
18        rust: [nightly, beta, stable, 1.53.0]
19    steps:
20      - uses: actions/checkout@v2
21      - uses: dtolnay/rust-toolchain@master
22        with:
23          toolchain: ${{matrix.rust}}
24          components: rust-src
25      - run: cargo test
26      - run: cargo check --no-default-features
27      - run: cargo check --features backtrace
28
29  build:
30    name: Rust ${{matrix.rust}}
31    runs-on: ubuntu-latest
32    strategy:
33      fail-fast: false
34      matrix:
35        rust: [1.52.0, 1.51.0, 1.50.0, 1.42.0, 1.38.0]
36    steps:
37      - uses: actions/checkout@v2
38      - uses: dtolnay/rust-toolchain@master
39        with:
40          toolchain: ${{matrix.rust}}
41      - run: cargo check
42      - run: cargo check --no-default-features
43      - run: cargo check --features backtrace
44        if: matrix.rust != '1.38.0'
45
46  windows:
47    name: Windows
48    runs-on: windows-latest
49    steps:
50      - uses: actions/checkout@v2
51      - uses: dtolnay/rust-toolchain@stable
52      - run: cargo check --features backtrace
53
54  clippy:
55    name: Clippy
56    runs-on: ubuntu-latest
57    if: github.event_name != 'pull_request'
58    steps:
59      - uses: actions/checkout@v2
60      - uses: dtolnay/rust-toolchain@clippy
61      - run: cargo clippy --tests -- -Dclippy::all -Dclippy::pedantic
62
63  miri:
64    name: Miri
65    runs-on: ubuntu-latest
66    steps:
67      - uses: actions/checkout@v2
68      - uses: dtolnay/rust-toolchain@nightly
69        with:
70          components: miri, rust-src
71      - run: cargo miri test
72        env:
73          MIRIFLAGS: '-Zmiri-tag-raw-pointers'
74
75  outdated:
76    name: Outdated
77    runs-on: ubuntu-latest
78    if: github.event_name != 'pull_request'
79    steps:
80      - uses: actions/checkout@v2
81      - uses: dtolnay/install@cargo-outdated
82      - run: cargo outdated --exit-code 1
83