...
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
30 td.CmpNoError(t, internal.CheckStackTracer(req, nil))
31
32
33 err = errors.New("error")
34 td.Cmp(t, internal.CheckStackTracer(req, err), err)
35
36
37 origErr := errors.New("foo")
38 errTracer := internal.StackTracer{
39 Err: origErr,
40 }
41 td.Cmp(t, internal.CheckStackTracer(req, errTracer), origErr)
42
43
44 errTracer = internal.StackTracer{}
45 td.CmpNoError(t, internal.CheckStackTracer(req, errTracer))
46
47
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
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