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  }