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