func (runner *SpecRunner) runSpecs() bool { suiteFailed := false skipRemainingSpecs := false for _, spec := range runner.specs.Specs() { if runner.wasInterrupted() { return suiteFailed } if skipRemainingSpecs { spec.Skip() } runner.reportSpecWillRun(spec.Summary(runner.suiteID)) if !spec.Skipped() && !spec.Pending() { runner.runningSpec = spec spec.Run(runner.writer) runner.runningSpec = nil if spec.Failed() { suiteFailed = true } } else if spec.Pending() && runner.config.FailOnPending { suiteFailed = true } runner.reportSpecDidComplete(spec.Summary(runner.suiteID), spec.Failed()) if spec.Failed() && runner.config.FailFast { skipRemainingSpecs = true } } return !suiteFailed }
func (runner *SpecRunner) performDryRun() { runner.reportSuiteWillBegin() if runner.beforeSuiteNode != nil { summary := runner.beforeSuiteNode.Summary() summary.State = types.SpecStatePassed runner.reportBeforeSuite(summary) } for _, spec := range runner.specs.Specs() { summary := spec.Summary(runner.suiteID) runner.reportSpecWillRun(summary) if summary.State == types.SpecStateInvalid { summary.State = types.SpecStatePassed } runner.reportSpecDidComplete(summary, false) } if runner.afterSuiteNode != nil { summary := runner.afterSuiteNode.Summary() summary.State = types.SpecStatePassed runner.reportAfterSuite(summary) } runner.reportSuiteDidEnd(true) }