This repository has been archived by the owner on Mar 6, 2020. It is now read-only.
/
test.go
79 lines (67 loc) · 1.75 KB
/
test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package main
import (
"flag"
"fmt"
"os"
"github.com/constabulary/gb"
"github.com/constabulary/gb/cmd"
)
func init() {
registerCommand(TestCmd)
}
var (
tfs []string // Arguments passed to the test binary
testProfile bool
testCover bool
testCoverMode string
testCoverPkg string
)
func addTestFlags(fs *flag.FlagSet) {
addBuildFlags(fs)
fs.BoolVar(&testCover, "cover", false, "enable coverage analysis")
fs.StringVar(&testCoverMode, "covermode", "set", "Set covermode: set (default), count, atomic")
fs.StringVar(&testCoverPkg, "coverpkg", "", "enable coverage analysis")
}
var TestCmd = &cmd.Command{
Name: "test",
UsageLine: "test [build flags] [packages] [flags for test binary]",
Short: "test packages",
Long: `
'gb test' automates testing the packages named by the import paths.
'gb test' recompiles each package along with any files with names matching
the file pattern "*_test.go".
See 'go help test'
`,
Run: func(ctx *gb.Context, args []string) error {
ctx.Force = F
ctx.SkipInstall = FF
pkgs, err := cmd.ResolvePackagesWithTests(ctx, args...)
if err != nil {
return err
}
test, err := cmd.TestPackages(cmd.TestFlags(tfs), pkgs...)
if err != nil {
return err
}
if dotfile != "" {
f, err := os.Create(dotfile)
if err != nil {
return err
}
defer f.Close()
printActions(f, test)
}
return gb.ExecuteConcurrent(test, P)
},
AddFlags: addTestFlags,
FlagParse: func(flags *flag.FlagSet, args []string) error {
var err error
args, tfs, err = cmd.TestFlagsExtraParse(args[2:])
if err != nil {
fmt.Fprintf(os.Stderr, "gb test: %s\n", err)
fmt.Fprintf(os.Stderr, `run "go help test" or "go help testflag" for more information`+"\n")
os.Exit(2)
}
return flags.Parse(args)
},
}