Ejemplo n.º 1
0
func (r *SuiteRunner) listFailedSuites(suitesThatFailed []testsuite.TestSuite) {
	fmt.Println("")
	fmt.Println("There were failures detected in the following suites:")

	maxPackageNameLength := 0
	for _, suite := range suitesThatFailed {
		if len(suite.PackageName) > maxPackageNameLength {
			maxPackageNameLength = len(suite.PackageName)
		}
	}

	packageNameFormatter := fmt.Sprintf("%%%ds", maxPackageNameLength)

	for _, suite := range suitesThatFailed {
		if config.DefaultReporterConfig.NoColor {
			fmt.Printf("\t"+packageNameFormatter+" %s\n", suite.PackageName, suite.Path)
		} else {
			fmt.Fprintf(colorable.NewColorableStdout(), "\t%s"+packageNameFormatter+"%s %s%s%s\n", redColor, suite.PackageName, defaultStyle, lightGrayColor, suite.Path, defaultStyle)
		}
	}
}
Ejemplo n.º 2
0
func (w *SpecWatcher) WatchSuites(args []string, additionalArgs []string) {
	suites, _ := findSuites(args, w.commandFlags.Recurse, w.commandFlags.SkipPackage, false)

	if len(suites) == 0 {
		complainAndQuit("Found no test suites")
	}

	fmt.Printf("Identified %d test %s.  Locating dependencies to a depth of %d (this may take a while)...\n", len(suites), pluralizedWord("suite", "suites", len(suites)), w.commandFlags.Depth)
	deltaTracker := watch.NewDeltaTracker(w.commandFlags.Depth)
	delta, errors := deltaTracker.Delta(suites)

	fmt.Printf("Watching %d %s:\n", len(delta.NewSuites), pluralizedWord("suite", "suites", len(delta.NewSuites)))
	for _, suite := range delta.NewSuites {
		fmt.Println("  " + suite.Description())
	}

	for suite, err := range errors {
		fmt.Printf("Failed to watch %s: %s\n", suite.PackageName, err)
	}

	if len(suites) == 1 {
		runners := w.runnersForSuites(suites, additionalArgs)
		w.suiteRunner.RunSuites(runners, w.commandFlags.NumCompilers, true, nil)
		runners[0].CleanUp()
	}

	ticker := time.NewTicker(time.Second)

	for {
		select {
		case <-ticker.C:
			suites, _ := findSuites(args, w.commandFlags.Recurse, w.commandFlags.SkipPackage, false)
			delta, _ := deltaTracker.Delta(suites)
			coloredStream := colorable.NewColorableStdout()

			suitesToRun := []testsuite.TestSuite{}

			if len(delta.NewSuites) > 0 {
				fmt.Fprintf(coloredStream, greenColor+"Detected %d new %s:\n"+defaultStyle, len(delta.NewSuites), pluralizedWord("suite", "suites", len(delta.NewSuites)))
				for _, suite := range delta.NewSuites {
					suitesToRun = append(suitesToRun, suite.Suite)
					fmt.Fprintln(coloredStream, "  "+suite.Description())
				}
			}

			modifiedSuites := delta.ModifiedSuites()
			if len(modifiedSuites) > 0 {
				fmt.Fprintln(coloredStream, greenColor+"\nDetected changes in:"+defaultStyle)
				for _, pkg := range delta.ModifiedPackages {
					fmt.Fprintln(coloredStream, "  "+pkg)
				}
				fmt.Fprintf(coloredStream, greenColor+"Will run %d %s:\n"+defaultStyle, len(modifiedSuites), pluralizedWord("suite", "suites", len(modifiedSuites)))
				for _, suite := range modifiedSuites {
					suitesToRun = append(suitesToRun, suite.Suite)
					fmt.Fprintln(coloredStream, "  "+suite.Description())
				}
				fmt.Fprintln(coloredStream, "")
			}

			if len(suitesToRun) > 0 {
				w.UpdateSeed()
				w.ComputeSuccinctMode(len(suitesToRun))
				runners := w.runnersForSuites(suitesToRun, additionalArgs)
				result, _ := w.suiteRunner.RunSuites(runners, w.commandFlags.NumCompilers, true, func(suite testsuite.TestSuite) {
					deltaTracker.WillRun(suite)
				})
				for _, runner := range runners {
					runner.CleanUp()
				}
				if !w.interruptHandler.WasInterrupted() {
					color := redColor
					if result.Passed {
						color = greenColor
					}
					fmt.Fprintln(coloredStream, color+"\nDone.  Resuming watch..."+defaultStyle)
				}
			}

		case <-w.interruptHandler.C:
			return
		}
	}
}