public void RunTestSuite(LoggingLevel preferredLoggingLevel, MatchList exclusions, string rootDirectory) { currentLoggingLevel = preferredLoggingLevel; currentArtifactsDirectory = rootDirectory; currentCount = 0; for (currentCount = 0; currentCount < Count; currentCount++) { if (CoarseGrind.KILL_SWITCH) { // Decline to run break; } else { currentTest = this[(int)currentCount]; if (!exclusions.MatchesCaseInspecific(currentTest.IdentifiedName)) { try { executionThread = new Thread(Run); executionThread.Start(); executionThread.Join(); } catch (Exception thisFailure) { currentTest.AddResult(currentTest.GetResultForPreclusionInSetup(thisFailure)); } finally { executionThread = null; CopyResultsToCategories(); } } } } CreateSummaryReport(rootDirectory); }