// be reserved for failure to obtain a response. Similarly, Do should
// not attempt to handle higher-level protocol details such as redirects,
// authentication, or cookies.
+ //
+ // Transports may modify the request. The request Headers field is
+ // guaranteed to be initalized.
Do(req *Request) (resp *Response, err os.Error)
}
return
}
}
+
+ // Most the callers of send (Get, Post, et al) don't need
+ // Headers, leaving it uninitialized. We guarantee to the
+ // ClientTransport that this has been initialized, though.
+ if req.Header == nil {
+ req.Header = Header(make(map[string][]string))
+ }
+
info := req.URL.RawUserinfo
if len(info) > 0 {
enc := base64.URLEncoding
url := "http://dummy.faketld/"
client.Get(url) // Note: doesn't hit network
if tr.req.Method != "GET" {
- t.Fatalf("expected method %q; got %q", "GET", tr.req.Method)
+ t.Errorf("expected method %q; got %q", "GET", tr.req.Method)
}
if tr.req.URL.String() != url {
- t.Fatalf("expected URL %q; got %q", url, tr.req.URL.String())
+ t.Errorf("expected URL %q; got %q", url, tr.req.URL.String())
+ }
+ if tr.req.Header == nil {
+ t.Errorf("expected non-nil request Header")
}
}