Skip to content

Commit b61ffa2

Browse files
committed
[eclipse-iceoryx#60] integrate miri in ci with an allow list
1 parent aec86ae commit b61ffa2

File tree

3 files changed

+61
-0
lines changed

3 files changed

+61
-0
lines changed

.github/workflows/miri-check.yml

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Miri
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main, release* ]
8+
9+
jobs:
10+
miri:
11+
name: "Miri"
12+
runs-on: ubuntu-latest
13+
environment:
14+
name: ${{ github.ref_name }}
15+
steps:
16+
- uses: actions/checkout@v4
17+
- name: Install Miri
18+
run: |
19+
rustup toolchain install nightly --component miri
20+
rustup override set nightly
21+
cargo miri setup
22+
- name: Test with Miri
23+
run: ./internal/scripts/ci_run_miri.sh

.miri_allowlist

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# .miri_allowlist use hash character to lead a comment
2+
# each line will be treated as a valid relative path to enter and run 'cargo miri test',
3+
# if it contains some changed files(added, copied and modified, deletion is excluded) in the PR.
4+
#
5+
# note that each line should end up with a newline character,
6+
# otherwise the ci shell will skip the last line
7+
iceoryx2-bb/testing
8+
# this line is put here to ensure each file path contains a newline char, don't remove it

internal/scripts/ci_run_miri.sh

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Copyright (c) 2024 Contributors to the Eclipse Foundation
2+
#
3+
# See the NOTICE file(s) distributed with this work for additional
4+
# information regarding copyright ownership.
5+
#
6+
# This program and the accompanying materials are made available under the
7+
# terms of the Apache Software License 2.0 which is available at
8+
# https://www.apache.org/licenses/LICENSE-2.0, or the MIT license
9+
# which is available at https://opensource.org/licenses/MIT.
10+
#
11+
# SPDX-License-Identifier: Apache-2.0 OR MIT
12+
13+
filename=".miri_allowlist"
14+
while IFS= read -r line; do
15+
if [[ "$line" == \#* ]]; then
16+
continue
17+
fi
18+
19+
# set contains all changed files comparing to the $GITHUB_REF
20+
changes=$(git --no-pager diff --diff-filter=ACM --name-only $GITHUB_REF)
21+
22+
if echo "$changes" | grep -q "$line"; then
23+
cd "$line" || { echo "Failed to change directory to $line"; exit 1; }
24+
echo "Run cargo miri test under: $(pwd)"
25+
cargo miri test
26+
cd -
27+
else
28+
echo "skip $line because the PR doesn't touch its files"
29+
fi
30+
done < "$filename"

0 commit comments

Comments
 (0)