blob: 7e008eaabf6a003b69430e62bef52f0e6dc7ecfe (
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# Test using -json flag to specify specific fields.
# Test -json produces "full" output by looking for multiple fields present.
go list -json .
stdout '"Name": "a"'
stdout '"Stale": true'
# Same thing for -json=true
go list -json=true .
stdout '"Name": "a"'
stdout '"Stale": true'
# Test -json=false produces non-json output.
go list -json=false
cmp stdout want-non-json.txt
# Test -json=<field> keeps only that field.
go list -json=Name
cmp stdout want-json-name.txt
# Test -json=<field> with multiple fields.
go list -json=ImportPath,Name,GoFiles,Imports
cmp stdout want-json-multiple.txt
# Test -json=<field> with Deps outputs the Deps field.
go list -json=Deps
stdout '"Deps": \['
stdout '"errors",'
# Test -json=<field> with *EmbedPatterns outputs embed patterns.
cd embed
go list -json=EmbedPatterns,TestEmbedPatterns,XTestEmbedPatterns
stdout '"EmbedPatterns": \['
stdout '"TestEmbedPatterns": \['
stdout '"XTestEmbedPatterns": \['
# Test -json=<field> with *EmbedFiles fails due to broken file reference.
! go list -json=EmbedFiles
stderr 'no matching files found'
! go list -json=TestEmbedFiles
stderr 'no matching files found'
! go list -json=XTestEmbedFiles
stderr 'no matching files found'
cd ..
[!git] skip
# Test -json=<field> without Stale skips computing buildinfo
cd repo
exec git init
# Control case: with -json=Stale cmd/go executes git status to compute buildinfo
go list -json=Stale -x
stderr 'git status'
# Test case: without -json=Stale cmd/go skips git status
go list -json=Name -x
! stderr 'git status'
-- go.mod --
module example.com/a
go 1.18
-- a.go --
package a
import "fmt"
func F() {
fmt.Println("hey there")
}
-- want-non-json.txt --
example.com/a
-- want-json-name.txt --
{
"Name": "a"
}
-- want-json-multiple.txt --
{
"ImportPath": "example.com/a",
"Name": "a",
"GoFiles": [
"a.go"
],
"Imports": [
"fmt"
]
}
-- repo/go.mod --
module example.com/repo
-- repo/main.go --
package main
func main() {}
-- embed/go.mod --
module example.com/embed
-- embed/embed.go --
package embed
import _ "embed"
//go:embed non-existing-file.txt
var s string
-- embed/embed_test.go --
package embed
import _ "embed"
//go:embed non-existing-file.txt
var s string
-- embed/embed_xtest_test.go --
package embed_test
import _ "embed"
//go:embed non-existing-file.txt
var s string
|