| 
23 | 23 | require('../common');  | 
24 | 24 | const assert = require('assert');  | 
25 | 25 | const http = require('http');  | 
 | 26 | +const Countdown = require('../common/countdown');  | 
26 | 27 | 
 
  | 
27 | 28 | // Simple test of Node's HTTP ServerResponse.statusCode  | 
28 | 29 | // ServerResponse.prototype.statusCode  | 
29 | 30 | 
 
  | 
30 |  | -let testsComplete = 0;  | 
31 | 31 | const tests = [200, 202, 300, 404, 451, 500];  | 
32 |  | -let testIdx = 0;  | 
 | 32 | +let test;  | 
 | 33 | +const countdown = new Countdown(tests.length, () => s.close());  | 
33 | 34 | 
 
  | 
34 | 35 | const s = http.createServer(function(req, res) {  | 
35 |  | -  const t = tests[testIdx];  | 
36 |  | -  res.writeHead(t, { 'Content-Type': 'text/plain' });  | 
 | 36 | +  res.writeHead(test, { 'Content-Type': 'text/plain' });  | 
37 | 37 |   console.log(`--\nserver: statusCode after writeHead: ${res.statusCode}`);  | 
38 |  | -  assert.strictEqual(res.statusCode, t);  | 
 | 38 | +  assert.strictEqual(res.statusCode, test);  | 
39 | 39 |   res.end('hello world\n');  | 
40 | 40 | });  | 
41 | 41 | 
 
  | 
42 | 42 | s.listen(0, nextTest);  | 
43 | 43 | 
 
  | 
44 | 44 | 
 
  | 
45 | 45 | function nextTest() {  | 
46 |  | -  if (testIdx + 1 === tests.length) {  | 
47 |  | -    return s.close();  | 
48 |  | -  }  | 
49 |  | -  const test = tests[testIdx];  | 
 | 46 | +  test = tests.shift();  | 
50 | 47 | 
 
  | 
51 | 48 |   http.get({ port: s.address().port }, function(response) {  | 
52 | 49 |     console.log(`client: expected status: ${test}`);  | 
53 | 50 |     console.log(`client: statusCode: ${response.statusCode}`);  | 
54 | 51 |     assert.strictEqual(response.statusCode, test);  | 
55 | 52 |     response.on('end', function() {  | 
56 |  | -      testsComplete++;  | 
57 |  | -      testIdx += 1;  | 
58 |  | -      nextTest();  | 
 | 53 | +      if (countdown.dec())  | 
 | 54 | +        nextTest();  | 
59 | 55 |     });  | 
60 | 56 |     response.resume();  | 
61 | 57 |   });  | 
62 | 58 | }  | 
63 |  | - | 
64 |  | - | 
65 |  | -process.on('exit', function() {  | 
66 |  | -  assert.strictEqual(5, testsComplete);  | 
67 |  | -});  | 
0 commit comments