-
Notifications
You must be signed in to change notification settings - Fork 84
147 lines (124 loc) · 3.64 KB
/
test.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
136
137
138
139
140
141
142
143
144
145
146
147
on:
push:
branches:
- staging
- trying
pull_request:
branches:
- main
name: Continuous integration
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- stable
- beta
- nightly
- 1.71.1
env:
RUSTFLAGS: "-C target-cpu=native -C opt-level=3"
steps:
- name: Checkout roaring-rs
uses: actions/checkout@v4
- name: Initialize rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
components: rustfmt, clippy
- name: Check
# clippy will also do a build check
# so we don't need to run `cargo check` or `cargo build`
# use different features to check if everything is fine
# the incremental compilation will make this faster
run: |
cargo clippy -p roaring --all-targets --no-default-features -- -D warnings
cargo clippy -p roaring --all-targets --features serde -- -D warnings
- name: Check SIMD
if: matrix.rust == 'nightly'
run: cargo clippy -p roaring --all-targets --all-features -- -D warnings
- name: Check formatting
run: cargo fmt --all -- --check
test:
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
rust:
- stable
- beta
- nightly
- 1.71.1
features:
- default
- no-std
include:
- rust: nightly
features: simd
env:
RUSTFLAGS: "-C target-cpu=native -C opt-level=3"
steps:
- name: Checkout roaring-rs
uses: actions/checkout@v4
- name: Initialize rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Test
if: matrix.features == 'default'
run: cargo test -p roaring --features serde
- name: Test no default features
if: matrix.features == 'no-std'
run: cargo test -p roaring --no-default-features
- name: SIMD test
if: matrix.rust == 'nightly' && matrix.features == 'simd'
run: cargo +nightly test -p roaring --features simd
miri:
runs-on: ubuntu-latest
needs: build
env:
# warning: Miri does not support optimizations: the opt-level is ignored.
RUSTFLAGS: "-C target-cpu=native"
steps:
- name: Checkout roaring-rs
uses: actions/checkout@v4
- name: Initialize rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: miri
- name: Setup miri
run: cargo miri setup
- name: Test bit endian
run: cargo miri test --target s390x-unknown-linux-gnu -p roaring --lib -- bitmap::serialization::test::test_from_lsb0_bytes
bench:
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
rust:
- stable
- nightly
features:
- default
include:
- rust: nightly
features: simd
env:
RUSTFLAGS: "-C target-cpu=native -C opt-level=3"
ROARINGRS_BENCH_OFFLINE: "true"
steps:
- name: Checkout roaring-rs
uses: actions/checkout@v4
- name: Checkout benchmark datasets
uses: actions/checkout@v4
with:
repository: "RoaringBitmap/real-roaring-datasets"
path: "benchmarks/real-roaring-datasets"
- name: Initialize rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Bench
run: cargo bench --features "${{ matrix.features }}"