Do not break the string after REF: by commas

Example:
// REF: (in Foo).bar(Any?,Any?)

When broken by commas it produces a wrong list of expected references
Solution:
* Use findLinesWithPrefixesRemoved() instead of findStringWithPrefixes()
This commit is contained in:
Andrey Breslav
2013-08-28 12:50:34 +04:00
parent 7c3e30775a
commit d19b3a5628
@@ -35,6 +35,10 @@ import org.jetbrains.jet.testing.ReferenceUtils;
import java.util.List; import java.util.List;
public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase { public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
public static final String MULTIRESOLVE = "MULTIRESOLVE";
public static final String REF_EMPTY = "REF_EMPTY";
@Override @Override
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();
@@ -44,7 +48,7 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
protected void doTest(String path) { protected void doTest(String path) {
configureByFile(path); configureByFile(path);
if (InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), "MULTIRESOLVE")) { if (InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), MULTIRESOLVE)) {
doMultiResolveTest(); doMultiResolveTest();
} }
else { else {
@@ -53,14 +57,20 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
} }
protected static void doSingleResolveTest() { protected static void doSingleResolveTest() {
boolean shouldBeUnresolved = InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), "REF_EMPTY"); boolean shouldBeUnresolved = InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), REF_EMPTY);
String referenceToString = InTextDirectivesUtils.findStringWithPrefixes(getFile().getText(), "REF:"); List<String> refs = InTextDirectivesUtils.findLinesWithPrefixesRemoved(getFile().getText(), "REF:");
String referenceToString;
if (shouldBeUnresolved) { if (shouldBeUnresolved) {
Assert.assertNull("REF: directives will be ignored for REF_EMPTY test", referenceToString); Assert.assertTrue("REF: directives will be ignored for " + REF_EMPTY + " test: " + refs, refs.isEmpty());
referenceToString = "<empty>"; referenceToString = "<empty>";
} }
else { else {
assertTrue("Must be a single ref: " + refs + ".\n" +
"Use " + MULTIRESOLVE + " if you need multiple refs\n" +
"Use "+ REF_EMPTY + " for an unresolved reference",
refs.size() == 1);
referenceToString = refs.get(0);
Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString); Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString);
} }
@@ -83,8 +93,9 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
} }
} }
else { else {
Assert.assertNull(String.format("No reference found at offset: %s, but one resolved to %s was expected", offset, referenceToString), Assert.assertNull(
referenceToString); String.format("No reference found at offset: %s, but one resolved to %s was expected", offset, referenceToString),
referenceToString);
} }
} }