...

Source file src/github.com/jarcoal/httpmock/internal/stack_tracer_test.go

Documentation: github.com/jarcoal/httpmock/internal

     1  package internal_test
     2  
     3  import (
     4  	"errors"
     5  	"net/http"
     6  	"testing"
     7  
     8  	"github.com/maxatome/go-testdeep/td"
     9  
    10  	"github.com/jarcoal/httpmock/internal"
    11  )
    12  
    13  func TestStackTracer(t *testing.T) {
    14  	st := internal.StackTracer{}
    15  	td.CmpEmpty(t, st.Error())
    16  
    17  	st = internal.StackTracer{
    18  		Err: errors.New("foo"),
    19  	}
    20  	td.Cmp(t, st.Error(), "foo")
    21  
    22  	td.Cmp(t, st.Unwrap(), st.Err)
    23  }
    24  
    25  func TestCheckStackTracer(t *testing.T) {
    26  	req, err := http.NewRequest("GET", "http://foo.bar/", nil)
    27  	td.Require(t).CmpNoError(err)
    28  
    29  	// no error
    30  	td.CmpNoError(t, internal.CheckStackTracer(req, nil))
    31  
    32  	// Classic error
    33  	err = errors.New("error")
    34  	td.Cmp(t, internal.CheckStackTracer(req, err), err)
    35  
    36  	// stackTracer without customFn
    37  	origErr := errors.New("foo")
    38  	errTracer := internal.StackTracer{
    39  		Err: origErr,
    40  	}
    41  	td.Cmp(t, internal.CheckStackTracer(req, errTracer), origErr)
    42  
    43  	// stackTracer with nil error & without customFn
    44  	errTracer = internal.StackTracer{}
    45  	td.CmpNoError(t, internal.CheckStackTracer(req, errTracer))
    46  
    47  	// stackTracer
    48  	var mesg string
    49  	errTracer = internal.StackTracer{
    50  		Err: origErr,
    51  		CustomFn: func(args ...interface{}) {
    52  			mesg = args[0].(string)
    53  		},
    54  	}
    55  	gotErr := internal.CheckStackTracer(req, errTracer)
    56  	td.Cmp(t, mesg, td.Re(`(?s)^foo\nCalled from .*[^\n]\z`))
    57  	td.Cmp(t, gotErr, origErr)
    58  
    59  	// stackTracer with nil error but customFn
    60  	mesg = ""
    61  	errTracer = internal.StackTracer{
    62  		CustomFn: func(args ...interface{}) {
    63  			mesg = args[0].(string)
    64  		},
    65  	}
    66  	gotErr = internal.CheckStackTracer(req, errTracer)
    67  	td.Cmp(t, mesg, td.Re(`(?s)^GET http://foo\.bar/\nCalled from .*[^\n]\z`))
    68  	td.CmpNoError(t, gotErr)
    69  }
    70  

View as plain text