[dart/vm] Display test return code on divergence

Rationale:
A divergence can be caused by differences in test
output, timeout or crash. This patch displays the
return code of the test program, so that the latter
two cases can be distinguished.
Change-Id: Id5520a2da41aad191c0878148acfff2c98c110aa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/109682
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Felicitas Hetzelt <felih@google.com>
This commit is contained in:
Felicitas Hetzelt 2019-07-22 18:18:38 +00:00 committed by commit-bot@chromium.org
parent d16ad91719
commit 3999369c5f

View file

@ -343,7 +343,7 @@ class DartFuzzTest {
if (result1.output == result2.output) {
numSuccess++;
} else {
reportDivergence(result1, result2, true);
reportDivergence(result1, result2);
}
break;
case ResultCode.timeout:
@ -366,16 +366,23 @@ class DartFuzzTest {
return;
}
}
reportDivergence(result1, result2, false);
reportDivergence(result1, result2);
}
}
void reportDivergence(
TestResult result1, TestResult result2, bool outputDivergence) {
String generateReport(TestResult result1, TestResult result2) {
if (result1.code == result2.code) {
return "output";
} else {
return "${result1.code} vs ${result2.code}";
}
}
void reportDivergence(TestResult result1, TestResult result2) {
numDivergences++;
print(
'\n${isolate}: !DIVERGENCE! $version:$seed (output=${outputDivergence})');
if (outputDivergence) {
String report = generateReport(result1, result2);
print('\n${isolate}: !DIVERGENCE! $version:$seed (${report})');
if (result1.code == result2.code) {
// Only report the actual output divergence details when requested,
// since this output may be lengthy and should be reproducable anyway.
if (showStats) {