/** ***************************************************************************** */ synchronized boolean handleTestState(Element e) { boolean chng = false; class_name = IvyXml.getAttrString(e, "CLASS"); method_name = IvyXml.getAttrString(e, "METHOD"); test_name = IvyXml.getAttrString(e, "NAME"); test_class = IvyXml.getAttrString(e, "TCLASS"); TestStatus osts = test_status; TestState ost = test_state; boolean ignore = false; annotation_types.clear(); for (Element ane : IvyXml.children(e, "ANNOT")) { String ant = IvyXml.getText(ane); annotation_types.add(ant); if (ant.startsWith("@org.junit.Ignore")) ignore = true; } if (IvyXml.getAttrBool(e, "EMPTY")) ignore = true; String sts = IvyXml.getAttrString(e, "STATUS"); if (sts.equals("FAILURE")) { test_status = TestStatus.FAILURE; if (test_state == TestState.RUNNING || test_state == TestState.UNKNOWN) test_state = TestState.UP_TO_DATE; } else if (sts.equals("SUCCESS")) { test_status = TestStatus.SUCCESS; if (test_state == TestState.RUNNING || test_state == TestState.UNKNOWN) test_state = TestState.UP_TO_DATE; } else { if (ignore) test_state = TestState.IGNORED; test_status = TestStatus.UNKNOWN; count_data = null; } if (osts != test_status) chng = true; if (test_status == TestStatus.FAILURE) { String omsg = fail_message; fail_message = IvyXml.getTextElement(e, "EXCEPTION"); fail_trace = IvyXml.getTextElement(e, "TRACE"); if (fail_trace != null && fail_message == null) { int idx = fail_trace.indexOf("\n"); if (idx < 0) fail_message = fail_trace; else fail_message = fail_trace.substring(0, idx); } if (omsg == null && fail_message != null) chng = true; else if (omsg != null && fail_message == null) chng = true; else if (omsg != null && !omsg.equals(fail_message)) chng = true; } else { fail_message = null; fail_trace = null; } String st = IvyXml.getAttrString(e, "STATE"); if (st != null) { try { test_state = TestState.valueOf(st); } catch (IllegalArgumentException ex) { } } if (ost != test_state) chng = true; Element xe = IvyXml.getChild(e, "COVERAGE"); if (xe != null) count_data = new CountData(xe); if (chng) update(); return chng; }