| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | 
							- package convey
 
- import (
 
- 	"flag"
 
- 	"os"
 
- 	"github.com/jtolds/gls"
 
- 	"github.com/smartystreets/assertions"
 
- 	"github.com/smartystreets/goconvey/convey/reporting"
 
- )
 
- func init() {
 
- 	assertions.GoConveyMode(true)
 
- 	declareFlags()
 
- 	ctxMgr = gls.NewContextManager()
 
- }
 
- func declareFlags() {
 
- 	flag.BoolVar(&json, "json", false, "When true, emits results in JSON blocks. Default: 'false'")
 
- 	flag.BoolVar(&silent, "silent", false, "When true, all output from GoConvey is suppressed.")
 
- 	flag.BoolVar(&story, "story", false, "When true, emits story output, otherwise emits dot output. When not provided, this flag mirros the value of the '-test.v' flag")
 
- 	if noStoryFlagProvided() {
 
- 		story = verboseEnabled
 
- 	}
 
- 	// FYI: flag.Parse() is called from the testing package.
 
- }
 
- func noStoryFlagProvided() bool {
 
- 	return !story && !storyDisabled
 
- }
 
- func buildReporter() reporting.Reporter {
 
- 	selectReporter := os.Getenv("GOCONVEY_REPORTER")
 
- 	switch {
 
- 	case testReporter != nil:
 
- 		return testReporter
 
- 	case json || selectReporter == "json":
 
- 		return reporting.BuildJsonReporter()
 
- 	case silent || selectReporter == "silent":
 
- 		return reporting.BuildSilentReporter()
 
- 	case selectReporter == "dot":
 
- 		// Story is turned on when verbose is set, so we need to check for dot reporter first.
 
- 		return reporting.BuildDotReporter()
 
- 	case story || selectReporter == "story":
 
- 		return reporting.BuildStoryReporter()
 
- 	default:
 
- 		return reporting.BuildDotReporter()
 
- 	}
 
- }
 
- var (
 
- 	ctxMgr *gls.ContextManager
 
- 	// only set by internal tests
 
- 	testReporter reporting.Reporter
 
- )
 
- var (
 
- 	json   bool
 
- 	silent bool
 
- 	story  bool
 
- 	verboseEnabled = flagFound("-test.v=true")
 
- 	storyDisabled  = flagFound("-story=false")
 
- )
 
- // flagFound parses the command line args manually for flags defined in other
 
- // packages. Like the '-v' flag from the "testing" package, for instance.
 
- func flagFound(flagValue string) bool {
 
- 	for _, arg := range os.Args {
 
- 		if arg == flagValue {
 
- 			return true
 
- 		}
 
- 	}
 
- 	return false
 
- }
 
 
  |