// Copyright 2014 Pants project contributors (see CONTRIBUTORS.md).
// Licensed under the Apache License, Version 2.0 (see LICENSE).
package com.twitter.intellij.pants.resolve;
import com.intellij.codeInsight.TargetElementUtilBase;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiReference;
import com.twitter.intellij.pants.testFramework.PantsCodeInsightFixtureTestCase;
import java.util.Collection;
public class PantsResolveTest extends PantsCodeInsightFixtureTestCase {
@Override
protected String getBasePath() {
return "/resolve";
}
protected Collection<PsiElement> doTest(int expectedSize) {
final PsiFile file = myFixture.getFile();
assertNotNull(file);
final PsiReference reference = file.findReferenceAt(myFixture.getCaretOffset());
assertNotNull("no reference", reference);
final Collection<PsiElement> elements = TargetElementUtilBase.getInstance().getTargetCandidates(reference);
assertNotNull(elements);
assertEquals(expectedSize, elements.size());
return elements;
}
public void testScalaLibrary() {
myFixture.configureByText("BUILD", "scala_lib<caret>rary()");
doTest(1);
}
public void testDependencies() {
myFixture.configureByText("BUILD", "depend<caret>encies()");
doTest(1);
}
public void testRGlobs() {
myFixture.configureByText("BUILD", "scala_library(sources=rg<caret>lobs('src/*.java'))");
doTest(1);
}
public void testDependencies1() {
setUpPantsExecutable();
PsiFile expectedTarget = myFixture.addFileToProject("foo/bar/BUILD", "");
myFixture.configureByText("BUILD", "scala_library(dependencies=['foo/ba<caret>r']");
PsiElement target = doTest(1).iterator().next();
assertEquals(expectedTarget, target);
}
public void testDependencies2() {
setUpPantsExecutable();
myFixture.addFileToProject("foo/bar/BUILD", "");
myFixture.configureByText("BUILD", "scala_library(dependencies=['fo<caret>o/bar']");
PsiElement element = doTest(1).iterator().next();
assertTrue("Expected a directory!", element instanceof PsiDirectory);
assertEquals("Wrong directory name", "foo", ((PsiDirectory)element).getName());
}
}