Merge "Fail the test immediately on >100 errors." am: e268837101
Original change: https://android-review.googlesource.com/c/platform/cts/+/1460083
Change-Id: I17d986aef347cc22080dce5c3f4f7a79dfcba8ad
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java
index 7e8c6d6..5229a70 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java
@@ -90,16 +90,7 @@
mResultObserver.notifyFailure(FailureType.CAUGHT_EXCEPTION, e.getClass().getName(),
writer.toString());
}
- if (mResultObserver.mDidFail) {
- StringBuilder errorString = mResultObserver.mErrorString;
- ClassLoader classLoader = getClass().getClassLoader();
- errorString.append("\nClassLoader hierarchy\n");
- while (classLoader != null) {
- errorString.append(" ").append(classLoader).append("\n");
- classLoader = classLoader.getParent();
- }
- fail(errorString.toString());
- }
+ mResultObserver.onTestComplete(); // Will throw is there are failures
}
static String[] getCommaSeparatedList(Bundle instrumentationArgs, String key) {
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/TestResultObserver.java b/tests/signature/api-check/src/java/android/signature/cts/api/TestResultObserver.java
index 715cf2f..5b74951 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/TestResultObserver.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/TestResultObserver.java
@@ -19,15 +19,18 @@
import android.signature.cts.FailureType;
import android.signature.cts.ResultObserver;
+import repackaged.junit.framework.Assert;
+import repackaged.junit.framework.TestCase;
+
/**
* Keeps track of any reported failures.
*/
class TestResultObserver implements ResultObserver {
- boolean mDidFail = false;
- int failures = 0;
+ private boolean mDidFail = false;
+ private int failures = 0;
- StringBuilder mErrorString = new StringBuilder();
+ private StringBuilder mErrorString = new StringBuilder();
@Override
public void notifyFailure(FailureType type, String name, String errorMessage) {
@@ -41,7 +44,26 @@
mErrorString.append("\tError: ");
mErrorString.append(errorMessage);
} else if (failures == 101) {
- mErrorString.append("\nMore than 100 failures, more errors will be elided.");
+ mErrorString.append("\nMore than 100 failures, aborting test.");
+ finalizeErrorString();
+ Assert.fail(mErrorString.toString());
}
}
+
+ private void finalizeErrorString() {
+ ClassLoader classLoader = getClass().getClassLoader();
+ mErrorString.append("\nClassLoader hierarchy\n");
+ while (classLoader != null) {
+ mErrorString.append(" ").append(classLoader).append("\n");
+ classLoader = classLoader.getParent();
+ }
+ }
+
+ public void onTestComplete() {
+ if (mDidFail) {
+ finalizeErrorString();
+ Assert.fail(mErrorString.toString());
+ }
+
+ }
}