diff options
author | Andy Clement <aclement@pivotal.io> | 2020-07-22 14:09:06 -0700 |
---|---|---|
committer | Andy Clement <aclement@pivotal.io> | 2020-07-22 14:09:06 -0700 |
commit | c3289ab86bfb2c97cf34147239b3dde46de92a7c (patch) | |
tree | 9c52e4420eb874ccabc8e265b9cabaaf8717f815 /testing | |
parent | 5c82acb58e2d665a46529290ae85ae717cbf2bd3 (diff) | |
download | aspectj-c3289ab86bfb2c97cf34147239b3dde46de92a7c.tar.gz aspectj-c3289ab86bfb2c97cf34147239b3dde46de92a7c.zip |
Polish
Diffstat (limited to 'testing')
-rw-r--r-- | testing/src/test/java/org/aspectj/testing/util/RunUtils.java | 655 |
1 files changed, 332 insertions, 323 deletions
diff --git a/testing/src/test/java/org/aspectj/testing/util/RunUtils.java b/testing/src/test/java/org/aspectj/testing/util/RunUtils.java index 86c29a4a2..df889f222 100644 --- a/testing/src/test/java/org/aspectj/testing/util/RunUtils.java +++ b/testing/src/test/java/org/aspectj/testing/util/RunUtils.java @@ -1,20 +1,19 @@ /* ******************************************************************* - * Copyright (c) 1999-2001 Xerox Corporation, + * Copyright (c) 1999-2001 Xerox Corporation, * 2002 Palo Alto Research Center, Incorporated (PARC). - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Xerox/PARC initial implementation + * All rights reserved. + * This program and the accompanying materials are made available + * under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Xerox/PARC initial implementation * ******************************************************************/ package org.aspectj.testing.util; import java.io.PrintStream; -import java.util.Iterator; import org.aspectj.bridge.IMessage; import org.aspectj.bridge.IMessageHandler; @@ -28,341 +27,351 @@ import org.aspectj.testing.run.RunValidator; import org.aspectj.util.LangUtil; /** - * + * */ public class RunUtils { - /** enable verbose for this an any related AbstractRunSpec children */ - public static void enableVerbose(AbstractRunSpec spec) { // instanceof hack - LangUtil.throwIaxIfNull(spec, "spec"); - spec.runtime.setVerbose(true); - for (Iterator iter = spec.getChildren().iterator(); iter.hasNext();) { - IRunSpec child = (IRunSpec) iter.next(); + /** enable verbose for this an any related AbstractRunSpec children */ + public static void enableVerbose(AbstractRunSpec spec) { // instanceof hack + LangUtil.throwIaxIfNull(spec, "spec"); + spec.runtime.setVerbose(true); + for (Object element : spec.getChildren()) { + IRunSpec child = (IRunSpec) element; if (child instanceof AbstractRunSpec) { - enableVerbose((AbstractRunSpec) child); - } + enableVerbose((AbstractRunSpec) child); + } + } + } + + /** + * Calculate failures for this status. + * If the input status has no children and failed, the result is 1. + * If it has children and recurse is false, then + * the result is the number of children whose status has failed + * (so a failed status with some passing and no failing children + * will return 0). + * If it has children and recurse is true, + * then return the number of leaf failures in the tree, + * ignoring (roll-up) node failures. + * @return number of failures in children of this status + */ + public static int numFailures(IRunStatus status, boolean recurse) { + int numFails = 0; + IRunStatus[] children = status.getChildren(); + int numChildren = (null == children? 0 : children.length); + if (0 == numChildren) { + if (!RunValidator.NORMAL.runPassed(status)) { + return 1; + } + } else { + // int i = 0; + for (IRunStatus element : children) { + if (recurse) { + numFails += numFailures(element, recurse); + } else { + if (!RunValidator.NORMAL.runPassed(element)) { + numFails++; + } + } + } + } + return numFails; + } + + // ------------------------ printing status + public static void printShort(PrintStream out, IRunStatus status) { + if ((null == out) || (null == status)) { + return; + } + printShort(out, "", status); + } + + public static void printShort(PrintStream out, String prefix, IRunStatus status) { + int numFails = numFailures(status, true); + String fails = (0 == numFails ? "" : " - " + numFails + " failures"); + out.println(prefix + toShortString(status) + fails); + IRunStatus[] children = status.getChildren(); + int numChildren = (null == children? 0 : children.length); + if (0 < numChildren) { + int i = 0; + for (IRunStatus element : children) { + printShort(out, prefix + "[" + LangUtil.toSizedString(i++, 3) + "]: ", element); + if (!RunValidator.NORMAL.runPassed(element)) { + numFails++; + } + } + } + } + + public static void print(PrintStream out, IRunStatus status) { + if ((null == out) || (null == status)) { + return; + } + print(out, "", status); + } + + public static void print(PrintStream out, String prefix, IRunStatus status) { + print(out, prefix, status, MessageUtil.MESSAGE_ALL, MessageUtil.PICK_ALL); + } + + public static void print(PrintStream out, String prefix, IRunStatus status, + IMessageRenderer renderer, IMessageHandler selector) { + String label = status.getIdentifier() + + (status.runResult() ? "PASS" : "FAIL"); + out.println(prefix + label); + out.println(prefix + debugString(status)); + IMessageHolder messageHolder = status; + if ((null != messageHolder) && (0 < messageHolder.numMessages(null, true))) { + MessageUtil.print(out, messageHolder, prefix, renderer, selector); + } + Throwable thrown = status.getThrown(); + if (null != thrown) { + out.println(prefix + "--- printing stack trace for thrown"); + thrown.printStackTrace(out); + } + IRunStatus[] children = status.getChildren(); + int numChildren = (null == children? 0 : children.length); + int numFails = 0; + if (0 < numChildren) { + out.println(prefix + "--- printing children [" + numChildren + "]"); + int i = 0; + for (IRunStatus element : children) { + print(out, prefix + "[" + LangUtil.toSizedString(i++, 3) + "]: ", element); + if (!RunValidator.NORMAL.runPassed(element)) { + numFails++; + } + } + } + if (0 < numFails) { + label = numFails + " fails " + label; + } + out.println(""); + } + + + public static String debugString(IRunStatus status) { + if (null == status) { + return "null"; } - } - - /** - * Calculate failures for this status. - * If the input status has no children and failed, the result is 1. - * If it has children and recurse is false, then - * the result is the number of children whose status has failed - * (so a failed status with some passing and no failing children - * will return 0). - * If it has children and recurse is true, - * then return the number of leaf failures in the tree, - * ignoring (roll-up) node failures. - * @return number of failures in children of this status - */ - public static int numFailures(IRunStatus status, boolean recurse) { - int numFails = 0; - IRunStatus[] children = status.getChildren(); - int numChildren = (null == children? 0 : children.length); - if (0 == numChildren) { - if (!RunValidator.NORMAL.runPassed(status)) { - return 1; - } - } else { -// int i = 0; - for (int j = 0; j < children.length; j++) { - if (recurse) { - numFails += numFailures(children[j], recurse); - } else { - if (!RunValidator.NORMAL.runPassed(children[j])) { - numFails++; - } - } - } - } - return numFails; - } - - // ------------------------ printing status - public static void printShort(PrintStream out, IRunStatus status) { - if ((null == out) || (null == status)) { - return; - } - printShort(out, "", status); - } + final String[] LABELS = + new String[] { + "runResult", + "id", + "result", + "numChildren", + "completed", + //"parent", + "abort", + "started", + "thrown", + "messages" }; + String runResult = status.runResult() ? "PASS" : "FAIL"; + Throwable thrown = status.getThrown(); + String thrownString = LangUtil.unqualifiedClassName(thrown); + IRunStatus[] children = status.getChildren(); + String numChildren = (null == children? "0" : ""+children.length); + String numMessages = ""+status.numMessages(null, IMessageHolder.EQUAL); + Object[] values = + new Object[] { + runResult, + status.getIdentifier(), + status.getResult(), + numChildren, + status.isCompleted(), + //status.getParent(), // costly if parent printing us + status.getAbortRequest(), + status.started(), + thrownString, + numMessages }; + return org.aspectj.testing.util.LangUtil.debugStr(status.getClass(), LABELS, values); + } - public static void printShort(PrintStream out, String prefix, IRunStatus status) { - int numFails = numFailures(status, true); - String fails = (0 == numFails ? "" : " - " + numFails + " failures"); - out.println(prefix + toShortString(status) + fails); - IRunStatus[] children = status.getChildren(); - int numChildren = (null == children? 0 : children.length); - if (0 < numChildren) { - int i = 0; - for (int j = 0; j < children.length; j++) { - printShort(out, prefix + "[" + LangUtil.toSizedString(i++, 3) + "]: ", children[j]); - if (!RunValidator.NORMAL.runPassed(children[j])) { - numFails++; - } - } - } - } + public static String toShortString(IRunStatus status) { + if (null == status) { + return "null"; + } + String runResult = status.runResult() ? " PASS: " : " FAIL: "; + return (runResult + status.getIdentifier()); + } - public static void print(PrintStream out, IRunStatus status) { - if ((null == out) || (null == status)) { - return; - } - print(out, "", status); - } - - public static void print(PrintStream out, String prefix, IRunStatus status) { - print(out, prefix, status, MessageUtil.MESSAGE_ALL, MessageUtil.PICK_ALL); - } + /** renderer for IRunStatus */ + public static interface IRunStatusPrinter { + void printRunStatus(PrintStream out, IRunStatus status); + } - public static void print(PrintStream out, String prefix, IRunStatus status, - IMessageRenderer renderer, IMessageHandler selector) { - String label = status.getIdentifier() - + (status.runResult() ? "PASS" : "FAIL"); - out.println(prefix + label); - out.println(prefix + debugString(status)); - IMessageHolder messageHolder = status; - if ((null != messageHolder) && (0 < messageHolder.numMessages(null, true))) { - MessageUtil.print(out, messageHolder, prefix, renderer, selector); - } - Throwable thrown = status.getThrown(); - if (null != thrown) { - out.println(prefix + "--- printing stack trace for thrown"); - thrown.printStackTrace(out); - } - IRunStatus[] children = status.getChildren(); - int numChildren = (null == children? 0 : children.length); - int numFails = 0; - if (0 < numChildren) { - out.println(prefix + "--- printing children [" + numChildren + "]"); - int i = 0; - for (int j = 0; j < children.length; j++) { - print(out, prefix + "[" + LangUtil.toSizedString(i++, 3) + "]: ", children[j]); - if (!RunValidator.NORMAL.runPassed(children[j])) { - numFails++; - } - } - } - if (0 < numFails) { - label = numFails + " fails " + label; - } - out.println(""); - } + public static final IRunStatusPrinter VERBOSE_PRINTER = new IRunStatusPrinter() { + @Override + public String toString() { return "VERBOSE_PRINTER"; } + /** Render IRunStatus produced by running an AjcTest */ + @Override + public void printRunStatus(PrintStream out, IRunStatus status) { + printRunStatus(out, status, ""); + } + private void printRunStatus(PrintStream out, IRunStatus status, String prefix) { + LangUtil.throwIaxIfNull(out, "out"); + LangUtil.throwIaxIfNull(status, "status"); + String label = (status.runResult() ? " PASS: " : " FAIL: ") + + status.getIdentifier(); + out.println(prefix + "------------ " + label); + out.println(prefix + "--- result: " + status.getResult()); + if (0 < status.numMessages(null, true)) { + out.println(prefix + "--- messages "); + MessageUtil.print(out, status, prefix, MessageUtil.MESSAGE_ALL, MessageUtil.PICK_ALL); + } + Throwable thrown = status.getThrown(); + if (null != thrown) { + out.println(prefix + "--- thrown"); + thrown.printStackTrace(out); + } + IRunStatus[] children = status.getChildren(); + for (int i = 0; i < children.length; i++) { + String number = "[" + LangUtil.toSizedString(i,3) + "] "; + printRunStatus(out, children[i], prefix + number); + } + } + }; - - public static String debugString(IRunStatus status) { - if (null == status) { - return "null"; - } - final String[] LABELS = - new String[] { - "runResult", - "id", - "result", - "numChildren", - "completed", - //"parent", - "abort", - "started", - "thrown", - "messages" }; - String runResult = status.runResult() ? "PASS" : "FAIL"; - Throwable thrown = status.getThrown(); - String thrownString = LangUtil.unqualifiedClassName(thrown); - IRunStatus[] children = status.getChildren(); - String numChildren = (null == children? "0" : ""+children.length); - String numMessages = ""+status.numMessages(null, IMessageHolder.EQUAL); - Object[] values = - new Object[] { - runResult, - status.getIdentifier(), - status.getResult(), - numChildren, - new Boolean(status.isCompleted()), - //status.getParent(), // costly if parent printing us - status.getAbortRequest(), - new Boolean(status.started()), - thrownString, - numMessages }; - return org.aspectj.testing.util.LangUtil.debugStr(status.getClass(), LABELS, values); - } + /** print only status and fail/abort messages */ + public static final IRunStatusPrinter TERSE_PRINTER = new IRunStatusPrinter() { + @Override + public String toString() { return "TERSE_PRINTER"; } - public static String toShortString(IRunStatus status) { - if (null == status) { - return "null"; - } - String runResult = status.runResult() ? " PASS: " : " FAIL: "; - return (runResult + status.getIdentifier()); - } - - /** renderer for IRunStatus */ - public static interface IRunStatusPrinter { - void printRunStatus(PrintStream out, IRunStatus status); - } - - public static final IRunStatusPrinter VERBOSE_PRINTER = new IRunStatusPrinter() { - public String toString() { return "VERBOSE_PRINTER"; } - /** Render IRunStatus produced by running an AjcTest */ - public void printRunStatus(PrintStream out, IRunStatus status) { - printRunStatus(out, status, ""); - } - private void printRunStatus(PrintStream out, IRunStatus status, String prefix) { - LangUtil.throwIaxIfNull(out, "out"); - LangUtil.throwIaxIfNull(status, "status"); - String label = (status.runResult() ? " PASS: " : " FAIL: ") - + status.getIdentifier(); - out.println(prefix + "------------ " + label); - out.println(prefix + "--- result: " + status.getResult()); - if (0 < status.numMessages(null, true)) { - out.println(prefix + "--- messages "); - MessageUtil.print(out, status, prefix, MessageUtil.MESSAGE_ALL, MessageUtil.PICK_ALL); - } - Throwable thrown = status.getThrown(); - if (null != thrown) { - out.println(prefix + "--- thrown"); - thrown.printStackTrace(out); - } - IRunStatus[] children = status.getChildren(); - for (int i = 0; i < children.length; i++) { - String number = "[" + LangUtil.toSizedString(i,3) + "] "; - printRunStatus(out, children[i], prefix + number); + /** print only status and fail messages */ + @Override + public void printRunStatus(PrintStream out, IRunStatus status) { + printRunStatus(out, status, ""); + } + private void printRunStatus(PrintStream out, IRunStatus status, String prefix) { + LangUtil.throwIaxIfNull(out, "out"); + LangUtil.throwIaxIfNull(status, "status"); + String label = (status.runResult() ? "PASS: " : "FAIL: ") + + status.getIdentifier(); + out.println(prefix + label); + Object result = status.getResult(); + if ((null != result) && (IRunStatus.PASS != result) && (IRunStatus.FAIL != result)) { + out.println(prefix + "--- result: " + status.getResult()); + } + if (0 < status.numMessages(IMessage.FAIL, true)) { + MessageUtil.print(out, status, prefix, MessageUtil.MESSAGE_ALL, MessageUtil.PICK_FAIL_PLUS); + } + Throwable thrown = status.getThrown(); + if (null != thrown) { + out.println(prefix + "--- thrown: " + LangUtil.renderException(thrown, true)); } - } - }; + IRunStatus[] children = status.getChildren(); + for (int i = 0; i < children.length; i++) { + if (!children[i].runResult()) { + String number = "[" + LangUtil.toSizedString(i,3) + "] "; + printRunStatus(out, children[i], prefix + number); + } + } + out.println(""); + } + }; - /** print only status and fail/abort messages */ - public static final IRunStatusPrinter TERSE_PRINTER = new IRunStatusPrinter() { - public String toString() { return "TERSE_PRINTER"; } + /** Render IRunStatus produced by running an AjcTest.Suite. */ + public static final IRunStatusPrinter AJCSUITE_PRINTER = new IRunStatusPrinter() { + @Override + public String toString() { return "AJCSUITE_PRINTER"; } - /** print only status and fail messages */ - public void printRunStatus(PrintStream out, IRunStatus status) { - printRunStatus(out, status, ""); - } - private void printRunStatus(PrintStream out, IRunStatus status, String prefix) { - LangUtil.throwIaxIfNull(out, "out"); - LangUtil.throwIaxIfNull(status, "status"); - String label = (status.runResult() ? "PASS: " : "FAIL: ") - + status.getIdentifier(); - out.println(prefix + label); - Object result = status.getResult(); - if ((null != result) && (IRunStatus.PASS != result) && (IRunStatus.FAIL != result)) { - out.println(prefix + "--- result: " + status.getResult()); - } - if (0 < status.numMessages(IMessage.FAIL, true)) { - MessageUtil.print(out, status, prefix, MessageUtil.MESSAGE_ALL, MessageUtil.PICK_FAIL_PLUS); - } - Throwable thrown = status.getThrown(); - if (null != thrown) { - out.println(prefix + "--- thrown: " + LangUtil.renderException(thrown, true)); - } - IRunStatus[] children = status.getChildren(); - for (int i = 0; i < children.length; i++) { - if (!children[i].runResult()) { - String number = "[" + LangUtil.toSizedString(i,3) + "] "; - printRunStatus(out, children[i], prefix + number); - } - } - out.println(""); - } - }; + /** + * Render IRunStatus produced by running an AjcTest.Suite. + * This renders only test failures and + * a summary at the end. + */ + @Override + public void printRunStatus(PrintStream out, IRunStatus status) { + LangUtil.throwIaxIfNull(out, "out"); + LangUtil.throwIaxIfNull(status, "status"); + final String prefix = ""; + final boolean failed = status.runResult(); + String label = (status.runResult() ? "PASS: " : "FAIL: ") + + status.getIdentifier(); + out.println(prefix + label); + // print all messages - these are validator comments + if (0 < status.numMessages(null, true)) { + MessageUtil.print(out, status, "init", MessageUtil.MESSAGE_ALL, MessageUtil.PICK_ALL); + } + // XXX ignore thrown if failed - will be printed as message anyway? + Throwable thrown = status.getThrown(); + if ((null != thrown) && !failed) { + out.println(prefix + "--- printing stack trace for thrown"); + thrown.printStackTrace(out); + } + IRunStatus[] children = status.getChildren(); + int numChildren = (null == children? 0 : children.length); + int numFails = 0; + if (0 < numChildren) { + for (IRunStatus element : children) { + if (!RunValidator.NORMAL.runPassed(element)) { + numFails++; + } + } + } + if (0 < numFails) { + out.println(prefix + "--- " + numFails + " failures when running " + children.length + " tests"); + for (int j = 0; j < children.length; j++) { + if (!RunValidator.NORMAL.runPassed(children[j])) { + print(out, prefix + "[" + LangUtil.toSizedString(j, 3) + "]: ", children[j]); + out.println(""); + } + } + } + label = "ran " + children.length + " tests" + + (numFails == 0 ? "" : "(" + numFails + " fails)"); + out.println(""); + } - /** Render IRunStatus produced by running an AjcTest.Suite. */ - public static final IRunStatusPrinter AJCSUITE_PRINTER = new IRunStatusPrinter() { - public String toString() { return "AJCSUITE_PRINTER"; } - - /** - * Render IRunStatus produced by running an AjcTest.Suite. - * This renders only test failures and - * a summary at the end. - */ - public void printRunStatus(PrintStream out, IRunStatus status) { - LangUtil.throwIaxIfNull(out, "out"); - LangUtil.throwIaxIfNull(status, "status"); - final String prefix = ""; - final boolean failed = status.runResult(); - String label = (status.runResult() ? "PASS: " : "FAIL: ") - + status.getIdentifier(); - out.println(prefix + label); - // print all messages - these are validator comments - if (0 < status.numMessages(null, true)) { - MessageUtil.print(out, status, "init", MessageUtil.MESSAGE_ALL, MessageUtil.PICK_ALL); - } - // XXX ignore thrown if failed - will be printed as message anyway? - Throwable thrown = status.getThrown(); - if ((null != thrown) && !failed) { - out.println(prefix + "--- printing stack trace for thrown"); - thrown.printStackTrace(out); - } - IRunStatus[] children = status.getChildren(); - int numChildren = (null == children? 0 : children.length); - int numFails = 0; - if (0 < numChildren) { - for (int j = 0; j < children.length; j++) { - if (!RunValidator.NORMAL.runPassed(children[j])) { - numFails++; - } - } - } - if (0 < numFails) { - out.println(prefix + "--- " + numFails + " failures when running " + children.length + " tests"); - for (int j = 0; j < children.length; j++) { - if (!RunValidator.NORMAL.runPassed(children[j])) { - print(out, prefix + "[" + LangUtil.toSizedString(j, 3) + "]: ", children[j]); - out.println(""); - } - } - } - label = "ran " + children.length + " tests" - + (numFails == 0 ? "" : "(" + numFails + " fails)"); - out.println(""); - } - - }; - /** Render IRunStatus produced by running an AjcTest (verbose) */ - public static final IRunStatusPrinter AJCTEST_PRINTER = VERBOSE_PRINTER; + }; + /** Render IRunStatus produced by running an AjcTest (verbose) */ + public static final IRunStatusPrinter AJCTEST_PRINTER = VERBOSE_PRINTER; /** print this with messages, then children using AJCRUN_PRINTER */ - public static final IRunStatusPrinter AJC_PRINTER = new IRunStatusPrinter() { - public String toString() { return "AJC_PRINTER"; } - /** Render IRunStatus produced by running an AjcTest */ - public void printRunStatus(PrintStream out, IRunStatus status) { - LangUtil.throwIaxIfNull(out, "out"); - LangUtil.throwIaxIfNull(status, "status"); - String label = (status.runResult() ? " PASS: " : " FAIL: ") - + status.getIdentifier(); - out.println("------------ " + label); - MessageUtil.print(out, status, "", MessageUtil.MESSAGE_ALL, MessageUtil.PICK_ALL); - IRunStatus[] children = status.getChildren(); - for (int i = 0; i < children.length; i++) { - AJCRUN_PRINTER.printRunStatus(out, children[i]); + public static final IRunStatusPrinter AJC_PRINTER = new IRunStatusPrinter() { + @Override + public String toString() { return "AJC_PRINTER"; } + /** Render IRunStatus produced by running an AjcTest */ + @Override + public void printRunStatus(PrintStream out, IRunStatus status) { + LangUtil.throwIaxIfNull(out, "out"); + LangUtil.throwIaxIfNull(status, "status"); + String label = (status.runResult() ? " PASS: " : " FAIL: ") + + status.getIdentifier(); + out.println("------------ " + label); + MessageUtil.print(out, status, "", MessageUtil.MESSAGE_ALL, MessageUtil.PICK_ALL); + IRunStatus[] children = status.getChildren(); + for (IRunStatus element : children) { + AJCRUN_PRINTER.printRunStatus(out, element); } - //out.println("------------ END " + label); - out.println(""); - } - }; + //out.println("------------ END " + label); + out.println(""); + } + }; /** print only fail messages */ - public static final IRunStatusPrinter AJCRUN_PRINTER = new IRunStatusPrinter() { - public String toString() { return "AJCRUN_PRINTER"; } - /** Render IRunStatus produced by running an AjcTest child */ - public void printRunStatus(PrintStream out, IRunStatus status) { - LangUtil.throwIaxIfNull(out, "out"); - LangUtil.throwIaxIfNull(status, "status"); - final boolean orGreater = false; - int numFails = status.numMessages(IMessage.FAIL, orGreater); - if (0 < numFails) { - out.println("--- " + status.getIdentifier()); - IMessage[] fails = status.getMessages(IMessage.FAIL, orGreater); - for (int i = 0; i < fails.length; i++) { - out.println("[fail " + LangUtil.toSizedString(i, 3) + "]: " - + MessageUtil.MESSAGE_ALL.renderToString(fails[i])); + public static final IRunStatusPrinter AJCRUN_PRINTER = new IRunStatusPrinter() { + @Override + public String toString() { return "AJCRUN_PRINTER"; } + /** Render IRunStatus produced by running an AjcTest child */ + @Override + public void printRunStatus(PrintStream out, IRunStatus status) { + LangUtil.throwIaxIfNull(out, "out"); + LangUtil.throwIaxIfNull(status, "status"); + final boolean orGreater = false; + int numFails = status.numMessages(IMessage.FAIL, orGreater); + if (0 < numFails) { + out.println("--- " + status.getIdentifier()); + IMessage[] fails = status.getMessages(IMessage.FAIL, orGreater); + for (int i = 0; i < fails.length; i++) { + out.println("[fail " + LangUtil.toSizedString(i, 3) + "]: " + + MessageUtil.MESSAGE_ALL.renderToString(fails[i])); } - } - } - }; + } + } + }; private RunUtils() { } - + } |