Skip to content

Commit 223d1d6

Browse files
committed
Added determinism inspection workflow
1 parent 5a0ded8 commit 223d1d6

File tree

105 files changed

+14999
-0
lines changed

Some content is hidden

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

105 files changed

+14999
-0
lines changed

.github/workflows/determinism.yaml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Determinism
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
types:
7+
- opened
8+
- synchronize
9+
10+
jobs:
11+
check:
12+
strategy:
13+
fail-fast: false
14+
matrix:
15+
# Create a job for each target triple
16+
include:
17+
- os: macos-latest
18+
test_args: ""
19+
- os: ubuntu-latest
20+
test_args: ""
21+
- os: windows-latest
22+
test_args: "--work-dir=D:/rd"
23+
runs-on: ${{ matrix.os }}
24+
name: Check (${{ matrix.os }})
25+
steps:
26+
- uses: actions/checkout@master
27+
28+
- name: Run tests
29+
continue-on-error: true
30+
run: bazel run --compilation_mode=opt '//test/determinism:tester' '--' test --output=${{ github.workspace }}/results.json ${{ matrix.test_args }}
31+
32+
- name: Summarize (unix)
33+
if: runner.os != 'Windows'
34+
run: |
35+
if [[ ! -f results.json ]]; then
36+
exit 1
37+
fi
38+
39+
echo '<details>' >> ${GITHUB_STEP_SUMMARY}
40+
echo '' >> ${GITHUB_STEP_SUMMARY}
41+
echo '```json' >> ${GITHUB_STEP_SUMMARY}
42+
cat results.json >> ${GITHUB_STEP_SUMMARY}
43+
echo '' >> ${GITHUB_STEP_SUMMARY}
44+
echo '```' >> ${GITHUB_STEP_SUMMARY}
45+
echo '' >> ${GITHUB_STEP_SUMMARY}
46+
echo '</details>' >> ${GITHUB_STEP_SUMMARY}
47+
48+
if [[ "$(cat results.json)" != "[]"* ]]; then
49+
exit 1
50+
fi
51+
- name: Summarize (windows)
52+
if: runner.os == 'Windows'
53+
run: |
54+
if (-not (Test-Path results.json)) {
55+
exit 1
56+
}
57+
58+
echo '<details>' >> $env:GITHUB_STEP_SUMMARY
59+
echo '' >> $env:GITHUB_STEP_SUMMARY
60+
echo '```json' >> $env:GITHUB_STEP_SUMMARY
61+
echo Get-Content -Path results.json >> $env:GITHUB_STEP_SUMMARY
62+
echo '' >> $env:GITHUB_STEP_SUMMARY
63+
echo '```' >> $env:GITHUB_STEP_SUMMARY
64+
echo '' >> $env:GITHUB_STEP_SUMMARY
65+
echo '</details>' >> $env:GITHUB_STEP_SUMMARY
66+
67+
$content = Get-Content -Path results.json -Raw
68+
if (-not $content.StartsWith('[]')) {
69+
exit 1
70+
}

MODULE.bazel

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,17 @@ use_repo(
7171
"buildkite_config",
7272
"generated_inputs_in_external_repo",
7373
"libc",
74+
"rrtd",
75+
"rrtd__anyhow-1.0.97",
76+
"rrtd__blake3-1.6.1",
77+
"rrtd__clap-4.5.32",
78+
"rrtd__serde-1.0.219",
79+
"rrtd__serde_json-1.0.140",
80+
"rrtd__tempfile-3.19.0",
81+
"rrtd__tokio-1.44.1",
82+
"rrtd__tracing-0.1.41",
83+
"rrtd__tracing-subscriber-0.3.19",
84+
"rrtd__walkdir-2.5.0",
7485
"rtra",
7586
"rtra__serde-1.0.219",
7687
"rtra__serde_json-1.0.140",

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,

test/determinism/3rdparty/BUILD.bazel

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)