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  }