github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/client/allocrunner/taskrunner/errors_test.go (about) 1 package taskrunner 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/hashicorp/nomad/ci" 8 "github.com/hashicorp/nomad/nomad/structs" 9 "github.com/stretchr/testify/require" 10 ) 11 12 // Statically assert error implements the expected interfaces 13 var _ structs.Recoverable = (*hookError)(nil) 14 15 // TestHookError_Recoverable asserts that a NewHookError is recoverable if 16 // passed a recoverable error. 17 func TestHookError_Recoverable(t *testing.T) { 18 ci.Parallel(t) 19 20 // Create root error 21 root := errors.New("test error") 22 23 // Make it recoverable 24 recov := structs.NewRecoverableError(root, true) 25 26 // Create a fake task event 27 ev := structs.NewTaskEvent("test event") 28 29 herr := NewHookError(recov, ev) 30 31 require.Equal(t, ev, herr.(*hookError).taskEvent) 32 require.True(t, structs.IsRecoverable(herr)) 33 require.Equal(t, root.Error(), herr.Error()) 34 require.Equal(t, recov.Error(), herr.Error()) 35 } 36 37 // TestHookError_Unrecoverable asserts that a NewHookError is not recoverable 38 // unless it is passed a recoverable error. 39 func TestHookError_Unrecoverable(t *testing.T) { 40 ci.Parallel(t) 41 42 // Create error 43 err := errors.New("test error") 44 45 // Create a fake task event 46 ev := structs.NewTaskEvent("test event") 47 48 herr := NewHookError(err, ev) 49 50 require.Equal(t, ev, herr.(*hookError).taskEvent) 51 require.False(t, structs.IsRecoverable(herr)) 52 require.Equal(t, err.Error(), herr.Error()) 53 }