github.com/arneball/complete@v1.1.2/gocomplete/tests.go (about) 1 package main 2 3 import ( 4 "os" 5 "path/filepath" 6 "regexp" 7 "strings" 8 9 "github.com/posener/complete" 10 ) 11 12 var ( 13 predictBenchmark = funcPredict(regexp.MustCompile("^Benchmark")) 14 predictTest = funcPredict(regexp.MustCompile("^(Test|Example)")) 15 ) 16 17 // predictTest predict test names. 18 // it searches in the current directory for all the go test files 19 // and then all the relevant function names. 20 // for test names use prefix of 'Test' or 'Example', and for benchmark 21 // test names use 'Benchmark' 22 func funcPredict(funcRegexp *regexp.Regexp) complete.Predictor { 23 return complete.PredictFunc(func(a complete.Args) []string { 24 return funcNames(funcRegexp) 25 }) 26 } 27 28 // get all test names in current directory 29 func funcNames(funcRegexp *regexp.Regexp) (tests []string) { 30 filepath.Walk("./", func(path string, info os.FileInfo, err error) error { 31 // if not a test file, skip 32 if !strings.HasSuffix(path, "_test.go") { 33 return nil 34 } 35 // inspect test file and append all the test names 36 tests = append(tests, functionsInFile(path, funcRegexp)...) 37 return nil 38 }) 39 return 40 }