-
Notifications
You must be signed in to change notification settings - Fork 219
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: configurable external check failures (#6810)
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
- Loading branch information
1 parent
e341a3b
commit 73ccd45
Showing
28 changed files
with
77 additions
and
4 deletions.
There are no files selected for viewing
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Critical Libraries Status | ||
|
||
This directory contains one `.failures.jsonl` file per external directory that is checked by CI. | ||
CI will run the external repository tests and compare the test failures against those recorded | ||
in these files. If there's a difference, CI will fail. | ||
|
||
This allows us to mark some tests as expected to fail if we introduce breaking changes. | ||
When tests are fixed on the external repository, CI will let us know that we need to remove | ||
the `.failures.jsonl` failures on our side. | ||
|
||
The format of the `.failures.jsonl` files is one JSON per line with a failure: | ||
|
||
```json | ||
{"suite":"one","name":"foo"} | ||
``` | ||
|
||
If it's expected that an external repository doesn't compile (because a PR introduces breaking changes | ||
to, say, the type system) you can remove the `.failures.jsonl` file for that repository and CI | ||
will pass again. Once the repository compiles again, CI will let us know and require us to put | ||
back the `.failures.jsonl` file. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{"event":"started","name":"one","test_count":1,"type":"suite"} | ||
{"event":"started","name":"foo","suite":"one","type":"test"} | ||
{"event":"failed","exec_time":0.05356625,"name":"foo","suite":"one","type":"test"} | ||
{"event":"ok","failed":0,"ignored":0,"passed":1,"type":"suite"} |
1 change: 1 addition & 0 deletions
1
.github/critical_libraries_status/noir-lang/ec/.actual.jsonl.jq
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"suite":"one","name":"foo"} |
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#!/bin/bash | ||
set -eu | ||
|
||
# Usage: ./check_test_results.sh <expected.json> <actual.jsonl> | ||
# Compares the output of two test results of the same repository. | ||
# If any of the files doesn't exist or is empty, the script will consider that the test suite | ||
# couldn't be compiled. | ||
|
||
function process_json_lines() { | ||
cat $1 | jq -c 'select(.type == "test" and .event == "failed") | {suite: .suite, name: .name}' | jq -s -c 'sort_by(.suite, .name) | .[]' > $1.jq | ||
} | ||
|
||
if [ -f $1 ] && [ -f $2 ]; then | ||
# Both files exist, let's compare them | ||
$(process_json_lines $2) | ||
if ! diff $1 $2.jq; then | ||
echo "Error: test failures don't match expected failures" | ||
echo "Lines prefixed with '>' are new test failures (you could add them to '$1')" | ||
echo "Lines prefixed with '<' are tests that were expected to fail but passed (you could remove them from '$1')" | ||
fi | ||
elif [ -f $1 ]; then | ||
# Only the expected file exists, which means the actual test couldn't be compiled. | ||
echo "Error: external library tests couldn't be compiled." | ||
echo "You could rename '$1' to '$1.does_not_compile' if it's expected that the external library can't be compiled." | ||
exit -1 | ||
elif [ -f $2 ]; then | ||
# Only the actual file exists, which means we are expecting the external library | ||
# not to compile but it did. | ||
echo "Error: expected external library not to compile, but it did." | ||
echo "You could create '$1' with these contents:" | ||
$(process_json_lines $2) | ||
cat $2.jq | ||
exit -1 | ||
else | ||
# Both files don't exists, which means we are expecting the external library not | ||
# to compile, and it didn't, so all is good. | ||
exit 0 | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters