Skip to content

Commit 806bb92

Browse files
committed
Added determinism inspection workflow
1 parent 3038b62 commit 806bb92

File tree

99 files changed

+14366
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+14366
-1
lines changed

.github/workflows/determinism.yaml

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
name: Determinism
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
check:
8+
strategy:
9+
fail-fast: false
10+
matrix:
11+
# Create a job for each target triple
12+
include:
13+
- os: macos-latest
14+
work_dir: "${{ runner.temp }}/r"
15+
- os: ubuntu-latest
16+
work_dir: "${{ runner.temp }}/r"
17+
- os: windows-latest
18+
work_dir: "C:/r"
19+
runs-on: ${{ matrix.os }}
20+
name: Check (${{ matrix.os }})
21+
steps:
22+
- uses: actions/checkout@master
23+
with:
24+
clean: true
25+
26+
- name: Run tests
27+
continue-on-error: true
28+
run:
29+
bazel run
30+
--compilation_mode=opt
31+
'//test/determinism:tester'
32+
'--'
33+
test
34+
--output=${{ github.workspace }}/results.json
35+
--work-dir=${{ matrix.work_dir }}
36+
37+
- name: Summarize (unix)
38+
if: runner.os != 'Windows'
39+
run: |
40+
if [[ ! -f results.json ]]; then
41+
exit 1
42+
fi
43+
44+
echo '<details>' >> ${GITHUB_STEP_SUMMARY}
45+
echo '' >> ${GITHUB_STEP_SUMMARY}
46+
echo '```json' >> ${GITHUB_STEP_SUMMARY}
47+
cat results.json >> ${GITHUB_STEP_SUMMARY}
48+
echo '' >> ${GITHUB_STEP_SUMMARY}
49+
echo '```' >> ${GITHUB_STEP_SUMMARY}
50+
echo '' >> ${GITHUB_STEP_SUMMARY}
51+
echo '</details>' >> ${GITHUB_STEP_SUMMARY}
52+
53+
if [[ "$(cat results.json)" != "[]"* ]]; then
54+
exit 1
55+
fi
56+
- name: Summarize (windows)
57+
if: runner.os == 'Windows'
58+
run: |
59+
if (-not (Test-Path results.json)) {
60+
exit 1
61+
}
62+
63+
echo '<details>' >> $env:GITHUB_STEP_SUMMARY
64+
echo '' >> $env:GITHUB_STEP_SUMMARY
65+
echo '```json' >> $env:GITHUB_STEP_SUMMARY
66+
Get-Content -Path results.json >> $env:GITHUB_STEP_SUMMARY
67+
echo '' >> $env:GITHUB_STEP_SUMMARY
68+
echo '```' >> $env:GITHUB_STEP_SUMMARY
69+
echo '' >> $env:GITHUB_STEP_SUMMARY
70+
echo '</details>' >> $env:GITHUB_STEP_SUMMARY
71+
72+
$content = Get-Content -Path results.json -Raw
73+
if (-not $content.StartsWith('[]')) {
74+
exit 1
75+
}
76+
77+
- name: Archive output base (unix)
78+
if: runner.os != 'Windows' && always()
79+
run: |
80+
if [[ -d "${{ matrix.work_dir }}/o" ]]; then
81+
tar -czf output-base.tar.gz -C "${{ matrix.work_dir }}" o
82+
fi
83+
84+
- name: Archive output base (windows)
85+
if: runner.os == 'Windows' && always()
86+
run: |
87+
if (Test-Path "${{ matrix.work_dir }}\o") {
88+
Compress-Archive -Path "${{ matrix.work_dir }}\o" -DestinationPath output-base.zip
89+
}
90+
91+
- name: Upload output base artifact
92+
if: always()
93+
uses: actions/upload-artifact@v4
94+
with:
95+
name: output-base-${{ matrix.os }}
96+
path: |
97+
output-base.tar.gz
98+
output-base.zip
99+
if-no-files-found: ignore

MODULE.bazel

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,17 @@ use_repo(
6666
"buildkite_config",
6767
"generated_inputs_in_external_repo",
6868
"libc",
69+
"rrtd",
70+
"rrtd__anyhow-1.0.100",
71+
"rrtd__blake3-1.8.2",
72+
"rrtd__clap-4.5.50",
73+
"rrtd__serde-1.0.228",
74+
"rrtd__serde_json-1.0.145",
75+
"rrtd__tempfile-3.23.0",
76+
"rrtd__tokio-1.48.0",
77+
"rrtd__tracing-0.1.41",
78+
"rrtd__tracing-subscriber-0.3.20",
79+
"rrtd__walkdir-2.5.0",
6980
"rtra",
7081
"rtra__serde-1.0.219",
7182
"rtra__serde_json-1.0.143",

test/cargo_build_script/compile_data/test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
pub fn test_compile_data() {
33
let data = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/", env!("DATA")));
44

5-
assert_eq!("La-Li-Lu-Le-Lo\n", data);
5+
assert_eq!("La-Li-Lu-Le-Lo", data.trim());
66
}

test/deps.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
44
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
5+
load("//test/determinism/3rdparty/crates:crates.bzl", determinism_test_crate_repositories = "crate_repositories")
56
load("//test/generated_inputs:external_repo.bzl", "generated_inputs_in_external_repo")
67
load("//test/load_arbitrary_tool:load_arbitrary_tool_test.bzl", "load_arbitrary_tool_test")
78
load("//test/rust_analyzer/3rdparty/crates:crates.bzl", rust_analyzer_test_crate_repositories = "crate_repositories")
@@ -40,6 +41,7 @@ def rules_rust_test_deps(is_bzlmod = False):
4041
direct_deps = load_arbitrary_tool_test()
4142
direct_deps.extend(generated_inputs_in_external_repo())
4243
direct_deps.extend(rust_analyzer_test_crate_repositories())
44+
direct_deps.extend(determinism_test_crate_repositories())
4345

4446
maybe(
4547
http_archive,
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
load("//crate_universe:defs.bzl", "crate", "crates_vendor")
2+
3+
crates_vendor(
4+
name = "crates_vendor",
5+
cargo_lockfile = "Cargo.Bazel.lock",
6+
mode = "remote",
7+
packages = {
8+
"anyhow": crate.spec(version = "1.0.97"),
9+
"blake3": crate.spec(version = "1.6.1"),
10+
"clap": crate.spec(
11+
features = [
12+
"derive",
13+
"env",
14+
],
15+
version = "4.5.32",
16+
),
17+
"serde": crate.spec(
18+
features = ["derive"],
19+
version = "1.0.219",
20+
),
21+
"serde_json": crate.spec(version = "1.0.140"),
22+
"tempfile": crate.spec(version = "3.19.0"),
23+
"tokio": crate.spec(
24+
features = ["full"],
25+
version = "1.44.1",
26+
),
27+
"tracing": crate.spec(version = "0.1.41"),
28+
"tracing-subscriber": crate.spec(version = "0.3.19"),
29+
"walkdir": crate.spec(version = "2.5.0"),
30+
},
31+
# `rrtd` == `rules_rust_test_determinism`
32+
repository_name = "rrtd",
33+
tags = ["manual"],
34+
)

0 commit comments

Comments
 (0)