@@ -47,14 +47,24 @@ const (
47
47
h2Mode = true
48
48
)
49
49
50
- func newClientServerTest (t * testing.T , h2 bool , h Handler ) * clientServerTest {
50
+ func newClientServerTest (t * testing.T , h2 bool , h Handler , opts ... interface {} ) * clientServerTest {
51
51
cst := & clientServerTest {
52
52
t : t ,
53
53
h2 : h2 ,
54
54
h : h ,
55
55
tr : & Transport {},
56
56
}
57
57
cst .c = & Client {Transport : cst .tr }
58
+
59
+ for _ , opt := range opts {
60
+ switch opt := opt .(type ) {
61
+ case func (* Transport ):
62
+ opt (cst .tr )
63
+ default :
64
+ t .Fatalf ("unhandled option type %T" , opt )
65
+ }
66
+ }
67
+
58
68
if ! h2 {
59
69
cst .ts = httptest .NewServer (h )
60
70
return cst
@@ -139,6 +149,7 @@ type h12Compare struct {
139
149
Handler func (ResponseWriter , * Request ) // required
140
150
ReqFunc reqFunc // optional
141
151
CheckResponse func (proto string , res * Response ) // optional
152
+ Opts []interface {}
142
153
}
143
154
144
155
func (tt h12Compare ) reqFunc () reqFunc {
@@ -149,9 +160,9 @@ func (tt h12Compare) reqFunc() reqFunc {
149
160
}
150
161
151
162
func (tt h12Compare ) run (t * testing.T ) {
152
- cst1 := newClientServerTest (t , false , HandlerFunc (tt .Handler ))
163
+ cst1 := newClientServerTest (t , false , HandlerFunc (tt .Handler ), tt . Opts ... )
153
164
defer cst1 .close ()
154
- cst2 := newClientServerTest (t , true , HandlerFunc (tt .Handler ))
165
+ cst2 := newClientServerTest (t , true , HandlerFunc (tt .Handler ), tt . Opts ... )
155
166
defer cst2 .close ()
156
167
157
168
res1 , err := tt .reqFunc ()(cst1 .c , cst1 .ts .URL )
@@ -380,6 +391,20 @@ func TestH12_AutoGzip(t *testing.T) {
380
391
}.run (t )
381
392
}
382
393
394
+ func TestH12_AutoGzip_Disabled (t * testing.T ) {
395
+ h12Compare {
396
+ Opts : []interface {}{
397
+ func (tr * Transport ) { tr .DisableCompression = true },
398
+ },
399
+ Handler : func (w ResponseWriter , r * Request ) {
400
+ fmt .Fprintf (w , "%q" , r .Header ["Accept-Encoding" ])
401
+ if ae := r .Header .Get ("Accept-Encoding" ); ae != "" {
402
+ t .Errorf ("%s Accept-Encoding = %q; want empty" , r .Proto , ae )
403
+ }
404
+ },
405
+ }.run (t )
406
+ }
407
+
383
408
// Test304Responses verifies that 304s don't declare that they're
384
409
// chunking in their response headers and aren't allowed to produce
385
410
// output.
0 commit comments