summaryrefslogtreecommitdiffstats
path: root/src/cmd/go/testdata/script/cover_statements.txt
blob: 030177cb8b4acfee45dfb86d684a5e10485ec0ec (plain)
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
[short] skip

# Workaround for issue 64014 -- for the portion of this test that
# verifies that caching works correctly, the cache should theoretically
# always behave reliably/deterministically, however if other tests are
# concurrently accessing the cache while this test is running, it can
# lead to cache lookup failures, which manifest as test failures here.
# To avoid such flakes, use a separate isolated GOCACHE for this test.
env GOCACHE=$WORK/cache

# Initial run with simple coverage.
go test -cover ./pkg1 ./pkg2 ./pkg3 ./pkg4
[!GOEXPERIMENT:coverageredesign] stdout 'pkg1	\[no test files\]'
[GOEXPERIMENT:coverageredesign] stdout 'pkg1		coverage: 0.0% of statements'
stdout 'pkg2	\S+	coverage: 0.0% of statements \[no tests to run\]'
stdout 'pkg3	\S+	coverage: 100.0% of statements'
stdout 'pkg4	\S+	coverage: \[no statements\]'

# Second run to make sure that caching works properly.
go test -x -cover ./pkg1 ./pkg2 ./pkg3 ./pkg4
[!GOEXPERIMENT:coverageredesign] stdout 'pkg1	\[no test files\]'
[GOEXPERIMENT:coverageredesign] stdout 'pkg1		coverage: 0.0% of statements'
stdout 'pkg2	\S+	coverage: 0.0% of statements \[no tests to run\]'
stdout 'pkg3	\S+	coverage: 100.0% of statements'
stdout 'pkg4	\S+	coverage: \[no statements\]'
[GOEXPERIMENT:coverageredesign] ! stderr 'link(\.exe"?)? -'
! stderr 'compile(\.exe"?)? -'
! stderr 'cover(\.exe"?)? -'
[GOEXPERIMENT:coverageredesign] stderr 'covdata(\.exe"?)? percent'

# Now add in -coverprofile.
go test -cover -coverprofile=cov.dat ./pkg1 ./pkg2 ./pkg3 ./pkg4
[!GOEXPERIMENT:coverageredesign] stdout 'pkg1	\[no test files\]'
[GOEXPERIMENT:coverageredesign] stdout 'pkg1		coverage: 0.0% of statements'
stdout 'pkg2	\S+	coverage: 0.0% of statements \[no tests to run\]'
stdout 'pkg3	\S+	coverage: 100.0% of statements'
stdout 'pkg4	\S+	coverage: \[no statements\]'

# Validate
go tool cover -func=cov.dat
[GOEXPERIMENT:coverageredesign] stdout 'pkg1/a.go:5:\s+F\s+0.0%'

-- go.mod --
module m

go 1.16
-- pkg1/a.go --
package pkg1

import "fmt"

func F() {
	fmt.Println("pkg1")
}
-- pkg2/a.go --
package pkg2

import "fmt"

func F() {
	fmt.Println("pkg2")
}
-- pkg2/a_test.go --
package pkg2
-- pkg3/a.go --
package pkg3

import "fmt"

func F() {
	fmt.Println("pkg3")
}
-- pkg3/a_test.go --
package pkg3

import "testing"

func TestF(t *testing.T) {
	F()
}
-- pkg4/a.go --
package pkg4

type T struct {
	X bool
}
-- pkg4/a_test.go --
package pkg4

import (
	"testing"
)

func TestT(t *testing.T) {
	_ = T{}
}