From 64bd99d429b2ad14d250c687a9ca238bd6412316 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Thu, 27 Oct 2016 20:15:31 -0700 Subject: [PATCH] Improved diagnostic messages in tests. Change-Id: I031061fa7ce8c7cf5af76f229ff9b93c411d1be3 --- .../tests/IndexBindingResolutionTestBase.java | 3 +- .../tests/IndexCPPBindingResolutionTest.java | 4 +-- .../core/testplugin/util/BaseTestCase.java | 31 ++++++++++++++----- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java index eddd23301ce..d4d4530cba5 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java @@ -365,7 +365,8 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase { NameCollector col = new NameCollector(); ast.accept(col); for (IASTName n : col.nameList) { - assertFalse("ProblemBinding for " + n.getRawSignature(), n.resolveBinding() instanceof IProblemBinding); + if (n.resolveBinding() instanceof IProblemBinding) + fail("ProblemBinding for " + formatForPrinting(n)); } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java index 35e196867f5..8cb670840c9 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPBindingResolutionTest.java @@ -18,8 +18,6 @@ import java.util.Arrays; import java.util.HashSet; import java.util.Set; -import junit.framework.TestSuite; - import org.eclipse.cdt.core.dom.ast.ASTTypeUtil; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.EScopeKind; @@ -54,6 +52,8 @@ import org.eclipse.cdt.core.parser.IProblem; import org.eclipse.cdt.internal.core.dom.parser.cpp.ClassTypeHelper; import org.eclipse.core.runtime.CoreException; +import junit.framework.TestSuite; + /** * For testing PDOM binding CPP language resolution */ diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java index 385e81a5da3..3fe5a87c31b 100644 --- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java +++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/testplugin/util/BaseTestCase.java @@ -24,14 +24,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import junit.framework.AssertionFailedError; -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestFailure; -import junit.framework.TestResult; -import junit.framework.TestSuite; - import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IValue; import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.core.index.IIndex; @@ -54,6 +48,13 @@ import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.jobs.Job; +import junit.framework.AssertionFailedError; +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestFailure; +import junit.framework.TestResult; +import junit.framework.TestSuite; + public class BaseTestCase extends TestCase { private static final String DEFAULT_INDEXER_TIMEOUT_SEC = "10"; private static final String INDEXER_TIMEOUT_PROPERTY = "indexer.timeout"; @@ -368,4 +369,20 @@ public class BaseTestCase extends TestCase { protected static void assertVariableValue(IVariable var, long expectedValue) { assertValue(var.getInitialValue(), expectedValue); } + + protected static String formatForPrinting(IASTName name) { + String signature = name.getRawSignature(); + boolean saved = CPPASTNameBase.sAllowNameComputation; + CPPASTNameBase.sAllowNameComputation = true; + try { + String nameStr = name.toString(); + if (signature.replace(" ", "").equals(nameStr.replace(" ", ""))) + return signature; + return nameStr + " in " + signature; + } catch (Throwable e) { + return signature; + } finally { + CPPASTNameBase.sAllowNameComputation = saved; + } + } }