use of com.intellij.javascript.testFramework.jasmine.JasmineFileStructure in project intellij-plugins by JetBrains.
the class KarmaTestLocationProvider method findJasmineElement.
@Nullable
private static PsiElement findJasmineElement(Project project, @NotNull List<String> suiteNames, @Nullable String testName) {
String key = JsTestFileByTestNameIndex.createJasmineKey(suiteNames);
GlobalSearchScope scope = GlobalSearchScope.projectScope(project);
List<VirtualFile> jsTestVirtualFiles = JsTestFileByTestNameIndex.findJsTestFilesByNameInScope(key, scope);
JasmineFileStructureBuilder builder = JasmineFileStructureBuilder.getInstance();
for (VirtualFile file : jsTestVirtualFiles) {
PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
if (psiFile instanceof JSFile) {
JasmineFileStructure jasmineFileStructure = builder.fetchCachedTestFileStructure((JSFile) psiFile);
PsiElement element = jasmineFileStructure.findPsiElement(suiteNames, testName);
if (element != null && element.isValid()) {
return element;
}
}
}
return null;
}
use of com.intellij.javascript.testFramework.jasmine.JasmineFileStructure in project intellij-plugins by JetBrains.
the class KarmaExecutionSession method findTopLevelSuiteNames.
private static List<String> findTopLevelSuiteNames(@NotNull Project project, @NotNull String testFilePath) throws ExecutionException {
VirtualFile file = LocalFileFinder.findFile(testFilePath);
if (file == null) {
throw new ExecutionException("Cannot find test file by " + testFilePath);
}
PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
JSFile jsFile = ObjectUtils.tryCast(psiFile, JSFile.class);
if (jsFile == null) {
LOG.info("Not a JavaScript file " + testFilePath + ", " + (psiFile == null ? "null" : psiFile.getClass()));
throw new ExecutionException("Not a JavaScript file: " + testFilePath);
}
JasmineFileStructure jasmine = JasmineFileStructureBuilder.getInstance().fetchCachedTestFileStructure(jsFile);
List<String> elements = jasmine.getTopLevelElements();
if (!elements.isEmpty()) {
return elements;
}
QUnitFileStructure qunit = QUnitFileStructureBuilder.getInstance().fetchCachedTestFileStructure(jsFile);
elements = qunit.getTopLevelElements();
if (!elements.isEmpty()) {
return elements;
}
throw new ExecutionException("No tests found in " + testFilePath);
}
use of com.intellij.javascript.testFramework.jasmine.JasmineFileStructure in project intellij-plugins by JetBrains.
the class JstdTestLocationProvider method findJasmineTestLocation.
@Nullable
private static PsiElement findJasmineTestLocation(@NotNull Project project, @NotNull String testCaseName, @Nullable String testMethodName) {
VirtualFile file = findJasmineTestFileSource(project, testCaseName);
if (file == null) {
return null;
}
PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
if (psiFile instanceof JSFile) {
JSFile jsFile = (JSFile) psiFile;
JasmineFileStructureBuilder builder = JasmineFileStructureBuilder.getInstance();
JasmineFileStructure jasmineFileStructure = builder.fetchCachedTestFileStructure(jsFile);
Map<String, JasmineSuiteStructure> map = Maps.newHashMap();
for (JasmineSuiteStructure suite : jasmineFileStructure.getSuites()) {
visitSuite("", map, suite);
}
JasmineSuiteStructure suite = map.get(testCaseName);
if (suite != null) {
if (testMethodName == null) {
return suite.getEnclosingCallExpression();
}
JasmineSpecStructure spec = suite.getInnerSpecByName(testMethodName);
if (spec != null) {
return spec.getEnclosingCallExpression();
}
}
}
return null;
}
use of com.intellij.javascript.testFramework.jasmine.JasmineFileStructure in project intellij-plugins by JetBrains.
the class KarmaRunConfigurationProducer method setupAsSuiteOrTest.
@Nullable
private static Pair<KarmaRunSettings, PsiElement> setupAsSuiteOrTest(@NotNull JSFile file, @NotNull VirtualFile virtualFile, @NotNull PsiElement element, @NotNull KarmaRunSettings templateSettings) {
TextRange textRange = element.getTextRange();
if (textRange == null || !file.isTestFile()) {
return null;
}
JasmineFileStructure jasmineStructure = JasmineFileStructureBuilder.getInstance().fetchCachedTestFileStructure(file);
JsTestElementPath path = jasmineStructure.findTestElementPath(textRange);
if (path != null) {
templateSettings = guessConfigFileIfNeeded(templateSettings, virtualFile, element.getProject());
KarmaRunSettings.Builder builder = templateSettings.toBuilder();
String testName = path.getTestName();
if (testName == null) {
builder.setScopeKind(KarmaScopeKind.SUITE);
builder.setTestNames(path.getSuiteNames());
} else {
builder.setScopeKind(KarmaScopeKind.TEST);
builder.setTestNames(path.getAllNames());
}
return Pair.create(builder.build(), path.getTestElement());
}
return null;
}
Aggregations