package com.jetbrains.lang.dart.test; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.TestSourcesFilter; import com.intellij.openapi.vfs.VirtualFile; import com.jetbrains.lang.dart.projectView.DartIconProvider; import org.jetbrains.annotations.NotNull; public class DartTestSourcesFilter extends TestSourcesFilter { @Override public boolean isTestSource(@NotNull final VirtualFile file, @NotNull final Project project) { if (!file.isInLocalFileSystem()) return false; final ProjectFileIndex fileIndex = ProjectFileIndex.SERVICE.getInstance(project); if (!fileIndex.isInContent(file)) return false; if (DartIconProvider.isFolderNearPubspecYaml(file, "test")) return true; if (!file.getPath().contains("/test/")) return false; // quick fail VirtualFile parent = file; while ((parent = parent.getParent()) != null && fileIndex.isInContent(parent)) { if (DartIconProvider.isFolderNearPubspecYaml(parent, "test")) return true; } return false; } }