@@ -14,111 +14,166 @@ import (
14
14
func TestParse (t * testing.T ) {
15
15
wantPkgs := []ftypes.Package {
16
16
{
17
+ ID : "github.com/aquasecurity/test" ,
17
18
Name : "github.com/aquasecurity/test" ,
18
19
Version : "" ,
19
20
Relationship : ftypes .RelationshipRoot ,
20
21
},
21
22
{
23
+ ID : "stdlib@v1.15.2" ,
22
24
Name : "stdlib" ,
23
25
Version : "v1.15.2" ,
24
26
Relationship : ftypes .RelationshipDirect ,
25
27
},
26
28
{
29
+ ID : "github.com/aquasecurity/go-pep440-version@v0.0.0-20210121094942-22b2f8951d46" ,
27
30
Name : "github.com/aquasecurity/go-pep440-version" ,
28
31
Version : "v0.0.0-20210121094942-22b2f8951d46" ,
29
32
},
30
33
{
34
+ ID : "github.com/aquasecurity/go-version@v0.0.0-20210121072130-637058cfe492" ,
31
35
Name : "github.com/aquasecurity/go-version" ,
32
36
Version : "v0.0.0-20210121072130-637058cfe492" ,
33
37
},
34
38
{
39
+ ID : "golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" ,
35
40
Name : "golang.org/x/xerrors" ,
36
41
Version : "v0.0.0-20200804184101-5ec99f83aff1" ,
37
42
},
38
43
}
44
+ wantDeps := []ftypes.Dependency {
45
+ {
46
+ ID : "github.com/aquasecurity/test" ,
47
+ DependsOn : []string {
48
+ "github.com/aquasecurity/go-pep440-version@v0.0.0-20210121094942-22b2f8951d46" ,
49
+ "github.com/aquasecurity/go-version@v0.0.0-20210121072130-637058cfe492" ,
50
+ "golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" ,
51
+ "stdlib@v1.15.2" ,
52
+ },
53
+ },
54
+ }
39
55
40
56
tests := []struct {
41
57
name string
42
58
inputFile string
43
- want []ftypes.Package
59
+ wantPkgs []ftypes.Package
60
+ wantDeps []ftypes.Dependency
44
61
wantErr string
45
62
}{
46
63
{
47
64
name : "ELF" ,
48
65
inputFile : "testdata/test.elf" ,
49
- want : wantPkgs ,
66
+ wantPkgs : wantPkgs ,
67
+ wantDeps : wantDeps ,
50
68
},
51
69
{
52
70
name : "PE" ,
53
71
inputFile : "testdata/test.exe" ,
54
- want : wantPkgs ,
72
+ wantPkgs : wantPkgs ,
73
+ wantDeps : wantDeps ,
55
74
},
56
75
{
57
76
name : "Mach-O" ,
58
77
inputFile : "testdata/test.macho" ,
59
- want : wantPkgs ,
78
+ wantPkgs : wantPkgs ,
79
+ wantDeps : wantDeps ,
60
80
},
61
81
{
62
82
name : "with replace directive" ,
63
83
inputFile : "testdata/replace.elf" ,
64
- want : []ftypes.Package {
84
+ wantPkgs : []ftypes.Package {
65
85
{
86
+ ID : "github.com/ebati/trivy-mod-parse" ,
66
87
Name : "github.com/ebati/trivy-mod-parse" ,
67
88
Version : "" ,
68
89
Relationship : ftypes .RelationshipRoot ,
69
90
},
70
91
{
92
+ ID : "stdlib@v1.16.4" ,
71
93
Name : "stdlib" ,
72
94
Version : "v1.16.4" ,
73
95
Relationship : ftypes .RelationshipDirect ,
74
96
},
75
97
{
98
+ ID : "github.com/davecgh/go-spew@v1.1.1" ,
76
99
Name : "github.com/davecgh/go-spew" ,
77
100
Version : "v1.1.1" ,
78
101
},
79
102
{
103
+ ID : "github.com/go-sql-driver/mysql@v1.5.0" ,
80
104
Name : "github.com/go-sql-driver/mysql" ,
81
105
Version : "v1.5.0" ,
82
106
},
83
107
},
108
+ wantDeps : []ftypes.Dependency {
109
+ {
110
+ ID : "github.com/ebati/trivy-mod-parse" ,
111
+ DependsOn : []string {
112
+ "github.com/davecgh/go-spew@v1.1.1" ,
113
+ "github.com/go-sql-driver/mysql@v1.5.0" ,
114
+ "stdlib@v1.16.4" ,
115
+ },
116
+ },
117
+ },
84
118
},
85
119
{
86
120
name : "with semver main module version" ,
87
121
inputFile : "testdata/semver-main-module-version.macho" ,
88
- want : []ftypes.Package {
122
+ wantPkgs : []ftypes.Package {
89
123
{
124
+ ID : "go.etcd.io/bbolt@v1.3.5" ,
90
125
Name : "go.etcd.io/bbolt" ,
91
126
Version : "v1.3.5" ,
92
127
Relationship : ftypes .RelationshipRoot ,
93
128
},
94
129
{
130
+ ID : "stdlib@v1.20.6" ,
95
131
Name : "stdlib" ,
96
132
Version : "v1.20.6" ,
97
133
Relationship : ftypes .RelationshipDirect ,
98
134
},
99
135
},
136
+ wantDeps : []ftypes.Dependency {
137
+ {
138
+ ID : "go.etcd.io/bbolt@v1.3.5" ,
139
+ DependsOn : []string {
140
+ "stdlib@v1.20.6" ,
141
+ },
142
+ },
143
+ },
100
144
},
101
145
{
102
146
name : "with -ldflags=\" -X main.version=v1.0.0\" " ,
103
147
inputFile : "testdata/main-version-via-ldflags.elf" ,
104
- want : []ftypes.Package {
148
+ wantPkgs : []ftypes.Package {
105
149
{
150
+ ID : "github.com/aquasecurity/test@v1.0.0" ,
106
151
Name : "github.com/aquasecurity/test" ,
107
152
Version : "v1.0.0" ,
108
153
Relationship : ftypes .RelationshipRoot ,
109
154
},
110
155
{
156
+ ID : "stdlib@v1.22.1" ,
111
157
Name : "stdlib" ,
112
158
Version : "v1.22.1" ,
113
159
Relationship : ftypes .RelationshipDirect ,
114
160
},
115
161
},
162
+ wantDeps : []ftypes.Dependency {
163
+ {
164
+ ID : "github.com/aquasecurity/test@v1.0.0" ,
165
+ DependsOn : []string {
166
+ "stdlib@v1.22.1" ,
167
+ },
168
+ },
169
+ },
116
170
},
117
171
{
118
172
name : "goexperiment" ,
119
173
inputFile : "testdata/goexperiment" ,
120
- want : []ftypes.Package {
174
+ wantPkgs : []ftypes.Package {
121
175
{
176
+ ID : "stdlib@v1.22.1" ,
122
177
Name : "stdlib" ,
123
178
Version : "v1.22.1" ,
124
179
Relationship : ftypes .RelationshipDirect ,
@@ -137,15 +192,15 @@ func TestParse(t *testing.T) {
137
192
require .NoError (t , err )
138
193
defer f .Close ()
139
194
140
- got , _ , err := binary .NewParser ().Parse (f )
195
+ gotPkgs , gotDeps , err := binary .NewParser ().Parse (f )
141
196
if tt .wantErr != "" {
142
- require .Error (t , err )
143
- assert .Contains (t , err .Error (), tt .wantErr )
197
+ assert .ErrorContains (t , err , tt .wantErr )
144
198
return
145
199
}
146
200
147
201
require .NoError (t , err )
148
- assert .Equal (t , tt .want , got )
202
+ assert .Equal (t , tt .wantPkgs , gotPkgs )
203
+ assert .Equal (t , tt .wantDeps , gotDeps )
149
204
})
150
205
}
151
206
}
0 commit comments