| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | package conveyimport (	"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}
 |