1 /* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.signature.cts.api; 18 19 import android.signature.cts.FailureType; 20 import android.signature.cts.ResultObserver; 21 22 import repackaged.junit.framework.Assert; 23 import repackaged.junit.framework.TestCase; 24 25 /** 26 * Keeps track of any reported failures. 27 */ 28 class TestResultObserver implements ResultObserver { 29 30 private boolean mDidFail = false; 31 private int failures = 0; 32 33 private StringBuilder mErrorString = new StringBuilder(); 34 35 @Override notifyFailure(FailureType type, String name, String errorMessage)36 public void notifyFailure(FailureType type, String name, String errorMessage) { 37 mDidFail = true; 38 failures++; 39 if (failures <= 100) { 40 mErrorString.append("\n"); 41 mErrorString.append(type.toString().toLowerCase()); 42 mErrorString.append(":\t"); 43 mErrorString.append(name); 44 mErrorString.append("\tError: "); 45 mErrorString.append(errorMessage); 46 } else if (failures == 101) { 47 mErrorString.append("\nMore than 100 failures, aborting test."); 48 finalizeErrorString(); 49 Assert.fail(mErrorString.toString()); 50 } 51 } 52 finalizeErrorString()53 private void finalizeErrorString() { 54 ClassLoader classLoader = getClass().getClassLoader(); 55 mErrorString.append("\nClassLoader hierarchy\n"); 56 while (classLoader != null) { 57 mErrorString.append(" ").append(classLoader).append("\n"); 58 classLoader = classLoader.getParent(); 59 } 60 } 61 onTestComplete()62 public void onTestComplete() { 63 if (mDidFail) { 64 finalizeErrorString(); 65 Assert.fail(mErrorString.toString()); 66 } 67 68 } 69 } 70