@@ -25,6 +25,7 @@ import (
25
25
csi "github.com/container-storage-interface/spec/lib/go/csi"
26
26
"google.golang.org/api/googleapi"
27
27
"google.golang.org/grpc/codes"
28
+ "google.golang.org/grpc/status"
28
29
)
29
30
30
31
var (
@@ -319,13 +320,36 @@ func TestCodeForError(t *testing.T) {
319
320
inputErr : & googleapi.Error {Code : http .StatusInternalServerError , Message : "Internal error" },
320
321
expCode : & internalErrorCode ,
321
322
},
323
+ {
324
+ name : "context canceled error" ,
325
+ inputErr : context .Canceled ,
326
+ expCode : errCodePtr (codes .Canceled ),
327
+ },
328
+ {
329
+ name : "context deadline exceeded error" ,
330
+ inputErr : context .DeadlineExceeded ,
331
+ expCode : errCodePtr (codes .DeadlineExceeded ),
332
+ },
333
+ {
334
+ name : "status error with Aborted error code" ,
335
+ inputErr : status .Error (codes .Aborted , "aborted error" ),
336
+ expCode : errCodePtr (codes .Aborted ),
337
+ },
338
+ {
339
+ name : "nil error" ,
340
+ inputErr : nil ,
341
+ expCode : nil ,
342
+ },
322
343
}
323
344
324
345
for _ , tc := range testCases {
325
346
t .Logf ("Running test: %v" , tc .name )
326
- actualCode := * CodeForError (tc .inputErr )
327
- if * tc .expCode != actualCode {
328
- t .Fatalf ("Expected error code '%v' but got '%v'" , tc .expCode , actualCode )
347
+ errCode := CodeForError (tc .inputErr )
348
+ if (tc .expCode == nil ) != (errCode == nil ) {
349
+ t .Errorf ("test %v failed: got %v, expected %v" , tc .name , errCode , tc .expCode )
350
+ }
351
+ if tc .expCode != nil && * errCode != * tc .expCode {
352
+ t .Errorf ("test %v failed: got %v, expected %v" , tc .name , errCode , tc .expCode )
329
353
}
330
354
}
331
355
}
0 commit comments