Skip to content

Commit 5ae8250

Browse files
committed
Merge remote-tracking branch 'ci/main' into ci
2 parents dd2b6a8 + 15c1fa2 commit 5ae8250

File tree

6 files changed

+415
-0
lines changed

6 files changed

+415
-0
lines changed

.github/codecov.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# ref: https://docs.codecov.com/docs/codecovyml-reference
2+
coverage:
3+
# Hold ourselves to a high bar
4+
range: 85..100
5+
round: down
6+
precision: 1
7+
status:
8+
# ref: https://docs.codecov.com/docs/commit-status
9+
project:
10+
default:
11+
# Avoid false negatives
12+
threshold: 1%
13+
14+
# Test files aren't important for coverage
15+
ignore:
16+
- "tests"
17+
18+
# Make comments less noisy
19+
comment:
20+
layout: "files"
21+
require_changes: yes

.github/workflows/check.yml

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
on:
2+
push:
3+
branches: [main]
4+
pull_request:
5+
name: check
6+
jobs:
7+
fmt:
8+
runs-on: ubuntu-latest
9+
name: stable / fmt
10+
steps:
11+
- uses: actions/checkout@v3
12+
with:
13+
submodules: true
14+
- name: Install stable
15+
uses: actions-rs/toolchain@v1
16+
with:
17+
profile: minimal
18+
toolchain: stable
19+
components: rustfmt
20+
- name: cargo fmt --check
21+
uses: actions-rs/cargo@v1
22+
with:
23+
command: fmt
24+
args: --check
25+
clippy:
26+
runs-on: ubuntu-latest
27+
name: ${{ matrix.toolchain }} / clippy
28+
strategy:
29+
fail-fast: false
30+
matrix:
31+
toolchain: [stable, beta]
32+
steps:
33+
- uses: actions/checkout@v3
34+
with:
35+
submodules: true
36+
- name: Install ${{ matrix.toolchain }}
37+
uses: actions-rs/toolchain@v1
38+
with:
39+
profile: minimal
40+
toolchain: ${{ matrix.toolchain }}
41+
default: true
42+
components: clippy
43+
- name: cargo clippy
44+
uses: actions-rs/clippy-check@v1
45+
with:
46+
token: ${{ secrets.GITHUB_TOKEN }}
47+
doc:
48+
runs-on: ubuntu-latest
49+
name: nightly / doc
50+
steps:
51+
- uses: actions/checkout@v3
52+
with:
53+
submodules: true
54+
- name: Install nightly
55+
uses: actions-rs/toolchain@v1
56+
with:
57+
profile: minimal
58+
toolchain: nightly
59+
default: true
60+
- name: cargo doc
61+
uses: actions-rs/cargo@v1
62+
with:
63+
command: doc
64+
args: --no-deps --all-features
65+
env:
66+
RUSTDOCFLAGS: --cfg docsrs
67+
hack:
68+
runs-on: ubuntu-latest
69+
name: ubuntu / stable / features
70+
steps:
71+
- uses: actions/checkout@v3
72+
with:
73+
submodules: true
74+
- name: Install stable
75+
uses: actions-rs/toolchain@v1
76+
with:
77+
profile: minimal
78+
toolchain: stable
79+
- name: cargo install cargo-hack
80+
uses: taiki-e/install-action@cargo-hack
81+
- name: cargo hack
82+
uses: actions-rs/cargo@v1
83+
with:
84+
command: hack
85+
args: --feature-powerset check --all-targets
86+
msrv:
87+
runs-on: ubuntu-latest
88+
# we use a matrix here just because env can't be used in job names
89+
# https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
90+
strategy:
91+
matrix:
92+
msrv: [1.56.1] # 2021 edition requires 1.56
93+
name: ubuntu / ${{ matrix.msrv }}
94+
steps:
95+
- uses: actions/checkout@v3
96+
with:
97+
submodules: true
98+
- name: Install ${{ matrix.toolchain }}
99+
uses: actions-rs/toolchain@v1
100+
with:
101+
profile: minimal
102+
toolchain: ${{ matrix.msrv }}
103+
default: true
104+
- name: cargo +${{ matrix.msrv }} check
105+
uses: actions-rs/cargo@v1
106+
with:
107+
command: check

.github/workflows/nostd.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
on:
2+
push:
3+
branches: [main]
4+
pull_request:
5+
name: no-std
6+
jobs:
7+
nostd:
8+
runs-on: ubuntu-latest
9+
name: ${{ matrix.target }}
10+
strategy:
11+
matrix:
12+
target: [thumbv7m-none-eabi, aarch64-unknown-none]
13+
steps:
14+
- uses: actions-rs/toolchain@v1
15+
with:
16+
profile: minimal
17+
toolchain: stable
18+
target: ${{ matrix.target }}
19+
- uses: actions/checkout@v3
20+
- name: cargo check
21+
uses: actions-rs/cargo@v1
22+
with:
23+
command: check
24+
args: --target ${{ matrix.target }} --no-default-features

.github/workflows/safety.yml

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
on:
2+
push:
3+
branches: [main]
4+
pull_request:
5+
name: safety
6+
jobs:
7+
sanitizers:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: actions/checkout@v3
11+
with:
12+
submodules: true
13+
- name: Install nightly
14+
uses: actions-rs/toolchain@v1
15+
with:
16+
profile: minimal
17+
toolchain: nightly
18+
default: true
19+
- run: |
20+
# to get the symbolizer for debug symbol resolution
21+
sudo apt install llvm
22+
# to fix buggy leak analyzer:
23+
# https://github.com/japaric/rust-san#unrealiable-leaksanitizer
24+
sed -i '/\[features\]/i [profile.dev]' Cargo.toml
25+
sed -i '/profile.dev/a opt-level = 1' Cargo.toml
26+
cat Cargo.toml
27+
name: Enable debug symbols
28+
- name: cargo test -Zsanitizer=address
29+
uses: actions-rs/cargo@v1
30+
with:
31+
command: test
32+
# only --lib --tests b/c of https://github.com/rust-lang/rust/issues/53945
33+
args: --lib --tests --all-features --target x86_64-unknown-linux-gnu
34+
env:
35+
ASAN_OPTIONS: "detect_odr_violation=0:detect_leaks=0"
36+
RUSTFLAGS: "-Z sanitizer=address"
37+
- name: cargo test -Zsanitizer=leak
38+
if: always()
39+
uses: actions-rs/cargo@v1
40+
with:
41+
command: test
42+
args: --all-features --target x86_64-unknown-linux-gnu
43+
env:
44+
LSAN_OPTIONS: "suppressions=lsan-suppressions.txt"
45+
RUSTFLAGS: "-Z sanitizer=leak"
46+
miri:
47+
runs-on: ubuntu-latest
48+
steps:
49+
- uses: actions/checkout@v3
50+
with:
51+
submodules: true
52+
- run: |
53+
echo "NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)" >> $GITHUB_ENV
54+
- name: Install ${{ env.NIGHTLY }}
55+
uses: actions-rs/toolchain@v1
56+
with:
57+
profile: minimal
58+
toolchain: ${{ env.NIGHTLY }}
59+
default: true
60+
components: miri
61+
- name: cargo miri test
62+
uses: actions-rs/cargo@v1
63+
with:
64+
command: miri
65+
args: test
66+
env:
67+
MIRIFLAGS: "-Zmiri-tag-raw-pointers"
68+
loom:
69+
runs-on: ubuntu-latest
70+
steps:
71+
- uses: actions/checkout@v3
72+
with:
73+
submodules: true
74+
- name: Install stable
75+
uses: actions-rs/toolchain@v1
76+
with:
77+
toolchain: stable
78+
profile: minimal
79+
- name: cargo test --test loom
80+
uses: actions-rs/cargo@v1
81+
with:
82+
command: test
83+
args: --release --test loom
84+
env:
85+
LOOM_MAX_PREEMPTIONS: 2
86+
RUSTFLAGS: "--cfg loom"

.github/workflows/scheduled.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
on:
2+
push:
3+
branches: [main]
4+
pull_request:
5+
schedule:
6+
- cron: '7 7 * * *'
7+
name: cargo test (rolling)
8+
jobs:
9+
# https://twitter.com/mycoliza/status/1571295690063753218
10+
nightly:
11+
runs-on: ubuntu-latest
12+
name: ubuntu / nightly
13+
steps:
14+
- uses: actions/checkout@v3
15+
with:
16+
submodules: true
17+
- name: Install nightly
18+
uses: actions-rs/toolchain@v1
19+
with:
20+
profile: minimal
21+
toolchain: nightly
22+
default: true
23+
- name: cargo generate-lockfile
24+
if: hashFiles('Cargo.lock') == ''
25+
uses: actions-rs/cargo@v1
26+
with:
27+
command: generate-lockfile
28+
- name: cargo test --locked
29+
uses: actions-rs/cargo@v1
30+
with:
31+
command: test
32+
args: --locked --all-features --all-targets
33+
# https://twitter.com/alcuadrado/status/1571291687837732873
34+
update:
35+
runs-on: ubuntu-latest
36+
name: ubuntu / beta / updated
37+
# There's no point running this if no Cargo.lock was checked in in the
38+
# first place, since we'd just redo what happened in the regular test job.
39+
# Unfortunately, hashFiles only works in if on steps, so we reepeat it.
40+
# if: hashFiles('Cargo.lock') != ''
41+
steps:
42+
- uses: actions/checkout@v3
43+
with:
44+
submodules: true
45+
- name: Install beta
46+
if: hashFiles('Cargo.lock') != ''
47+
uses: actions-rs/toolchain@v1
48+
with:
49+
profile: minimal
50+
toolchain: beta
51+
default: true
52+
- name: cargo update
53+
if: hashFiles('Cargo.lock') != ''
54+
uses: actions-rs/cargo@v1
55+
with:
56+
command: update
57+
- name: cargo test
58+
if: hashFiles('Cargo.lock') != ''
59+
uses: actions-rs/cargo@v1
60+
with:
61+
command: test
62+
args: --locked --all-features --all-targets
63+
env:
64+
RUSTFLAGS: -D deprecated

0 commit comments

Comments
 (0)