@@ -3,44 +3,75 @@ var common = require('../common'),
3
3
assert = require ( 'assert' ) ,
4
4
http = require ( 'http' ) ;
5
5
6
- var testIndex = 0 ,
7
- responses = 0 ;
6
+ var testIndex = 0 ;
7
+ const testCount = 4 * 6 ;
8
+ const responseBody = 'Hi mars!' ;
8
9
9
10
var server = http . createServer ( function ( req , res ) {
10
- switch ( testIndex ++ ) {
11
+ function reply ( header ) {
12
+ switch ( testIndex % 4 ) {
11
13
case 0 :
12
- res . writeHead ( 200 , { test : 'foo \r\ninvalid: bar' } ) ;
14
+ res . writeHead ( 200 , { a : header , b : header } ) ;
13
15
break ;
14
16
case 1 :
15
- res . writeHead ( 200 , { test : 'foo \ninvalid: bar' } ) ;
17
+ res . setHeader ( 'a' , header ) ;
18
+ res . setHeader ( 'b' , header ) ;
19
+ res . writeHead ( 200 ) ;
16
20
break ;
17
21
case 2 :
18
- res . writeHead ( 200 , { test : 'foo \rinvalid: bar' } ) ;
22
+ res . setHeader ( 'a' , header ) ;
23
+ res . writeHead ( 200 , { b : header } ) ;
19
24
break ;
20
25
case 3 :
21
- res . writeHead ( 200 , { test : 'foo \n\n\ninvalid: bar' } ) ;
26
+ res . setHeader ( 'a' , [ header ] ) ;
27
+ res . writeHead ( 200 , { b : header } ) ;
28
+ break ;
29
+ default :
30
+ assert . fail ( 'unreachable' ) ;
31
+ }
32
+ res . end ( responseBody ) ;
33
+ }
34
+ switch ( ( testIndex / 4 ) | 0 ) {
35
+ case 0 :
36
+ reply ( 'foo \r\ninvalid: bar' ) ;
37
+ break ;
38
+ case 1 :
39
+ reply ( 'foo \ninvalid: bar' ) ;
40
+ break ;
41
+ case 2 :
42
+ reply ( 'foo \rinvalid: bar' ) ;
43
+ break ;
44
+ case 3 :
45
+ reply ( 'foo \n\n\ninvalid: bar' ) ;
22
46
break ;
23
47
case 4 :
24
- res . writeHead ( 200 , { test : 'foo \r\n \r\n \r\ninvalid: bar' } ) ;
25
- server . close ( ) ;
48
+ reply ( 'foo \r\n \r\n \r\ninvalid: bar' ) ;
49
+ break ;
50
+ case 5 :
51
+ reply ( 'foo \r \n \r \n \r \ninvalid: bar' ) ;
26
52
break ;
27
53
default :
28
54
assert ( false ) ;
29
55
}
30
- res . end ( 'Hi mars!' ) ;
56
+ if ( ++ testIndex === testCount ) {
57
+ server . close ( ) ;
58
+ }
31
59
} ) ;
32
60
33
- server . listen ( common . PORT , function ( ) {
34
- for ( var i = 0 ; i < 5 ; i ++ ) {
35
- var req = http . get ( { port : common . PORT , path : '/' } , function ( res ) {
36
- assert . strictEqual ( res . headers . test , 'foo invalid: bar' ) ;
61
+ server . listen ( common . PORT , common . mustCall ( function ( ) {
62
+ for ( var i = 0 ; i < testCount ; i ++ ) {
63
+ http . get ( { port : common . PORT , path : '/' } , common . mustCall ( function ( res ) {
64
+ assert . strictEqual ( res . headers . a , 'foo invalid: bar' ) ;
65
+ assert . strictEqual ( res . headers . b , 'foo invalid: bar' ) ;
66
+ assert . strictEqual ( res . headers . foo , undefined ) ;
37
67
assert . strictEqual ( res . headers . invalid , undefined ) ;
38
- responses ++ ;
68
+ var data = '' ;
69
+ res . setEncoding ( 'utf8' ) ;
70
+ res . on ( 'data' , function ( s ) { data += s ; } ) ;
71
+ res . on ( 'end' , common . mustCall ( function ( ) {
72
+ assert . equal ( data , responseBody ) ;
73
+ } ) ) ;
39
74
res . resume ( ) ;
40
- } ) ;
75
+ } ) ) ;
41
76
}
42
- } ) ;
43
-
44
- process . on ( 'exit' , function ( ) {
45
- assert . strictEqual ( responses , 5 ) ;
46
- } ) ;
77
+ } ) ) ;
0 commit comments