-
-
Notifications
You must be signed in to change notification settings - Fork 73
135 lines (115 loc) · 4.13 KB
/
CI.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: CI
on:
push:
paths-ignore:
- '.devcontainer/**'
- '.gitpod.yml'
- '.vscode/**'
pull_request:
paths-ignore:
- '.devcontainer/**'
- '.gitpod.yml'
- '.vscode/**'
schedule:
# Run against the last commit on the default branch on Friday at 8pm (UTC?)
- cron: '0 20 * * 5'
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- stable
- beta
- 1.65.0 # MSRV
- nightly # For checking minimum version dependencies.
steps:
- name: Checkout Moka
uses: actions/checkout@v2
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
# 2-core CPU (x86_64), 7 GB of RAM
- name: Show CPU into
run: |
nproc
lscpu
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v1
- name: cargo clean
uses: actions-rs/cargo@v1
with:
command: clean
- name: Downgrade dependencies to minimal versions (Nightly only)
uses: actions-rs/cargo@v1
if: ${{ matrix.rust == 'nightly' }}
with:
command: update
args: -Z minimal-versions
- name: Pin some dependencies to specific versions (Nightly only)
if: ${{ matrix.rust == 'nightly' }}
run: |
cargo update -p openssl --precise 0.10.39
cargo update -p cc --precise 1.0.61
# - name: Pin some dependencies to specific versions (MSRV only)
# if: ${{ matrix.rust == '1.65.0' }}
# run: |
# cargo update -p <crate> --precise <version>
- name: Show cargo tree
uses: actions-rs/cargo@v1
with:
command: tree
args: --features future
- name: Run tests (debug, sync feature)
uses: actions-rs/cargo@v1
with:
command: test
args: --features sync
env:
RUSTFLAGS: '--cfg rustver'
- name: Run tests (release, sync feature)
uses: actions-rs/cargo@v1
with:
command: test
args: --release --features sync
env:
RUSTFLAGS: '--cfg rustver'
- name: Run tests (sync feature, thread-pool test for sync::Cache)
uses: actions-rs/cargo@v1
with:
command: test
args: --release --lib --features sync sync::cache::tests::enabling_and_disabling_thread_pools -- --exact --ignored
- name: Run tests (sync feature, thread-pool test for sync::SegmentedCache)
uses: actions-rs/cargo@v1
with:
command: test
args: --release --lib --features sync sync::segment::tests::enabling_and_disabling_thread_pools -- --exact --ignored
- name: Run tests (sync feature, key lock test for notification)
uses: actions-rs/cargo@v1
with:
command: test
args: --release --lib --features sync sync::cache::tests::test_key_lock_used_by_immediate_removal_notifications -- --exact --ignored
- name: Run tests (sync feature, drop value after eviction for sync::Cache)
uses: actions-rs/cargo@v1
with:
command: test
args: --release --lib --features sync sync::cache::tests::drop_value_immediately_after_eviction -- --exact --ignored
- name: Run tests (sync feature, drop value after eviction for sync::SegmentedCache)
uses: actions-rs/cargo@v1
with:
command: test
args: --release --lib --features sync sync::segment::tests::drop_value_immediately_after_eviction -- --exact --ignored
- name: Run tests (future feature, but no sync feature)
uses: actions-rs/cargo@v1
with:
command: test
args: --no-default-features --features 'future, atomic64, quanta'
- name: Run tests (future, sync and logging features)
uses: actions-rs/cargo@v1
with:
command: test
args: --features 'future, sync, logging'