package jetbrains.mps.baseLanguage.unitTest.execution.settings; /*Generated by MPS */ import jetbrains.mps.project.Project; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.util.ProgressMonitor; import java.util.List; import jetbrains.mps.baseLanguage.unitTest.execution.client.ITestNodeWrapper; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import org.jetbrains.mps.openapi.module.SModule; import org.jetbrains.mps.openapi.util.SubProgressKind; public class ProjectTestCollector extends TestCollector { private final Project myProject; public ProjectTestCollector(@NotNull Project project, @Nullable ProgressMonitor monitor, boolean breakOnFirstFound) { super(monitor, breakOnFirstFound); myProject = project; } @NotNull @Override public List<ITestNodeWrapper> collect() { List<ITestNodeWrapper> result = ListSequence.fromList(new ArrayList<ITestNodeWrapper>()); List<SModule> projectModules = myProject.getProjectModules(); myMonitor.start("Fetching tests from modules", 2 * projectModules.size()); try { for (SModule module : ListSequence.fromList(projectModules)) { if (myMonitor.isCanceled()) { return ListSequence.fromList(new ArrayList<ITestNodeWrapper>()); } List<ITestNodeWrapper> moduleTests = new ModuleTestCollector(module, myMonitor.subTask(1, SubProgressKind.REPLACING), myBreakOnFirstFound).collect(); ListSequence.fromList(result).addSequence(ListSequence.fromList(moduleTests)); myMonitor.advance(1); if (myBreakOnFirstFound && ListSequence.fromList(moduleTests).isNotEmpty()) { return result; } } } finally { myMonitor.done(); } return result; } }