From e8ae75709dc3193e0a50556ea7af889d4e038c9a Mon Sep 17 00:00:00 2001 From: Alexey Gopachenko Date: Sun, 20 May 2012 16:52:30 +0200 Subject: [PATCH] failure reporting to include XML comparison for convenience --- .../hierarchy/HierarchyViewTestBase.java | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/java/testFramework/src/com/intellij/testFramework/codeInsight/hierarchy/HierarchyViewTestBase.java b/java/testFramework/src/com/intellij/testFramework/codeInsight/hierarchy/HierarchyViewTestBase.java index 08e0a97fd43d..1cebeb8a490b 100755 --- a/java/testFramework/src/com/intellij/testFramework/codeInsight/hierarchy/HierarchyViewTestBase.java +++ b/java/testFramework/src/com/intellij/testFramework/codeInsight/hierarchy/HierarchyViewTestBase.java @@ -5,8 +5,10 @@ import com.intellij.ide.hierarchy.HierarchyNodeDescriptor; import com.intellij.ide.hierarchy.HierarchyTreeStructure; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.JDOMUtil; +import com.intellij.openapi.util.io.FileUtil; import org.jdom.Document; import org.jdom.Element; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.*; @@ -32,7 +34,38 @@ public abstract class HierarchyViewTestBase extends CodeInsightTestCase { configureByFiles(null, relFilePaths); final String verificationFilePath = getTestDataPath() + "/" + getBasePath() + "/" + getTestName(false) + "_verification.xml"; - checkHierarchyTreeStructure(treeStructureComputable.compute(), JDOMUtil.loadDocument(new File(verificationFilePath))); + HierarchyTreeStructure structure = treeStructureComputable.compute(); + try { + checkHierarchyTreeStructure(structure, JDOMUtil.loadDocument(new File(verificationFilePath))); + } catch (Throwable e) { + assertEquals("XML structure comparison for your convenience, actual failure details BELOW", + FileUtil.loadFile(new File(verificationFilePath)), dump(structure, null, 0)); + //noinspection CallToPrintStackTrace + e.printStackTrace(); + } + } + + private static String dump(final HierarchyTreeStructure treeStructure, @Nullable HierarchyNodeDescriptor descriptor, int level) { + if(descriptor==null) descriptor = (HierarchyNodeDescriptor)treeStructure.getRootElement(); + StringBuilder b = new StringBuilder(); + for(int i = 0; i0) { + b.append(">\n"); + for(Object o : children) { + HierarchyNodeDescriptor d = (HierarchyNodeDescriptor)o; + b.append(dump(treeStructure, d, level + 1)); + } + for(int i = 0; i\n"); + } else { + b.append("/>\n"); + } + return b.toString(); } private static void checkHierarchyTreeStructure(final HierarchyTreeStructure treeStructure, final Document document) {