@@ -117,6 +117,7 @@ func TestDigestFromDirectory(t *testing.T) {
117
117
// ensure hash ignores prefix.
118
118
119
119
t .Run ("AbsolutePrefix" , func (t * testing.T ) {
120
+ t .Parallel ()
120
121
prefix := getTestdataVerifyRoot (t )
121
122
got , err := DigestFromDirectory (filepath .Join (prefix , relativePathname ))
122
123
if err != nil {
@@ -128,6 +129,7 @@ func TestDigestFromDirectory(t *testing.T) {
128
129
})
129
130
130
131
t .Run ("RelativePrefix" , func (t * testing.T ) {
132
+ t .Parallel ()
131
133
prefix := "../_testdata/digest"
132
134
got , err := DigestFromDirectory (filepath .Join (prefix , relativePathname ))
133
135
if err != nil {
@@ -232,6 +234,81 @@ func TestVerifyDepTree(t *testing.T) {
232
234
checkStatus (t , status , "github.com/charlie/notInTree" , NotInTree )
233
235
checkStatus (t , status , "launchpad.net/match" , HashVersionMismatch )
234
236
})
237
+
238
+ t .Run ("Non-existent directory" , func (t * testing.T ) {
239
+ t .Parallel ()
240
+ wantDigests := make (map [string ]VersionedDigest )
241
+ for k , v := range wantSums {
242
+ wantDigests [k ] = VersionedDigest {
243
+ HashVersion : HashVersion + 1 ,
244
+ Digest : v ,
245
+ }
246
+ }
247
+
248
+ status , err := CheckDepTree ("fooVendorRoot" , wantDigests )
249
+ if err != nil {
250
+ t .Fatal (err )
251
+ }
252
+
253
+ if got , want := len (status ), 6 ; got != want {
254
+ t .Errorf ("Unexpected result count from VerifyDepTree:\n \t (GOT): %v\n \t (WNT): %v" , got , want )
255
+ }
256
+
257
+ checkStatus (t , status , "github.com/alice/match" , NotInTree )
258
+ checkStatus (t , status , "github.com/alice/mismatch" , NotInTree )
259
+ checkStatus (t , status , "github.com/bob/match" , NotInTree )
260
+ checkStatus (t , status , "github.com/bob/emptyDigest" , NotInTree )
261
+ checkStatus (t , status , "github.com/charlie/notInTree" , NotInTree )
262
+ checkStatus (t , status , "launchpad.net/match" , NotInTree )
263
+
264
+ })
265
+ }
266
+
267
+ func TestParseVersionedDigest (t * testing.T ) {
268
+ t .Run ("Parse valid VersionedDigest" , func (t * testing.T ) {
269
+ t .Parallel ()
270
+ input := "1:60861e762bdbe39c4c7bf292c291329b731c9925388fd41125888f5c1c595feb"
271
+ vd , err := ParseVersionedDigest (input )
272
+ if err != nil {
273
+ t .Fatal ()
274
+ }
275
+
276
+ expectedHash := "60861e762bdbe39c4c7bf292c291329b731c9925388fd41125888f5c1c595feb"
277
+ if got , want := vd .Digest , expectedHash ; bytes .Equal (got , []byte (expectedHash )) {
278
+ t .Errorf ("Unexpected result from ParseVersionedDigest:\n \t (GOT): %s\n \t (WNT): %s" , got , want )
279
+ }
280
+
281
+ if got , want := vd .String (), input ; got != want {
282
+ t .Errorf ("Unexpected result from ParseVersionedDigest String:\n \t (GOT): %s\n \t (WNT): %s" , got , want )
283
+ }
284
+ })
285
+
286
+ t .Run ("Parse VersionedDigest with invalid format" , func (t * testing.T ) {
287
+ t .Parallel ()
288
+ input := "1abc"
289
+ _ , err := ParseVersionedDigest (input )
290
+ if err == nil {
291
+ t .Error ("expected error for invalid VersionedDigest format" )
292
+ }
293
+ })
294
+
295
+ t .Run ("Parse VersionedDigest with invalid hex string" , func (t * testing.T ) {
296
+ t .Parallel ()
297
+ input := "1:60861g762bdbe39c4c7bf292c291329b731c9925388fd41125888f5c1c595feb"
298
+ _ , err := ParseVersionedDigest (input )
299
+ if err == nil {
300
+ t .Error ("expected error VersionedDigest with invalid hex string" )
301
+ }
302
+ })
303
+
304
+ t .Run ("Parse VersionedDigest with invalid hash version" , func (t * testing.T ) {
305
+ t .Parallel ()
306
+ input := "a:60861e762bdbe39c4c7bf292c291329b731c9925388fd41125888f5c1c595feb"
307
+ _ , err := ParseVersionedDigest (input )
308
+ if err == nil {
309
+ t .Error ("expected error VersionedDigest with invalid hash version" )
310
+ }
311
+ })
235
312
}
236
313
237
314
func BenchmarkDigestFromDirectory (b * testing.B ) {
0 commit comments