func file(srcPath string) ([]models.Path, error) { src := models.Path(srcPath) if filepath.Ext(srcPath) != ".go" || isHiddenFile(srcPath) || src.IsTestPath() { return nil, fmt.Errorf("no Go source files found at %v", srcPath) } return []models.Path{src}, nil }
func generateTest(src models.Path, files []models.Path, opt *Options) (*GeneratedTest, error) { p := &goparser.Parser{Importer: opt.Importer()} sr, err := p.Parse(string(src), files) if err != nil { return nil, fmt.Errorf("Parser.Parse source file: %v", err) } h := sr.Header h.Code = nil // Code is only needed from parsed test files. testPath := models.Path(src).TestPath() h, tf, err := parseTestFile(p, testPath, h) if err != nil { return nil, err } funcs := testableFuncs(sr.Funcs, opt.Only, opt.Exclude, opt.Exported, tf) if len(funcs) == 0 { return nil, nil } b, err := output.Process(h, funcs, &output.Options{ PrintInputs: opt.PrintInputs, Subtests: opt.Subtests, }) if err != nil { return nil, fmt.Errorf("output.Process: %v", err) } return &GeneratedTest{ Path: testPath, Functions: funcs, Output: b, }, nil }
func dirFiles(srcPath string) ([]models.Path, error) { ps, err := filepath.Glob(path.Join(srcPath, "*.go")) if err != nil { return nil, fmt.Errorf("filepath.Glob: %v\n", err) } var srcPaths []models.Path for _, p := range ps { src := models.Path(p) if isHiddenFile(p) || src.IsTestPath() { continue } srcPaths = append(srcPaths, src) } return srcPaths, nil }