mirror of
https://github.com/nodejs/node.git
synced 2025-05-10 08:45:09 +00:00

Enable linting for the test directory. A number of changes was made so all tests conform the current rules used by lib and src directories. The only exception for tests is that unreachable (dead) code is allowed. test-fs-non-number-arguments-throw had to be excluded from the changes because of a weird issue on Windows CI. PR-URL: https://github.com/nodejs/io.js/pull/1721 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
162 lines
4.3 KiB
JavaScript
162 lines
4.3 KiB
JavaScript
'use strict';
|
|
var common = require('../common');
|
|
var assert = require('assert');
|
|
var net = require('net');
|
|
var http = require('http');
|
|
|
|
var body = 'hello world\n';
|
|
|
|
var common_port = common.PORT;
|
|
|
|
function test(handler, request_generator, response_validator) {
|
|
var port = common_port++;
|
|
var server = http.createServer(handler);
|
|
|
|
var client_got_eof = false;
|
|
var server_response = {
|
|
data: '',
|
|
chunks: []
|
|
};
|
|
|
|
function cleanup() {
|
|
server.close();
|
|
response_validator(server_response, client_got_eof, true);
|
|
}
|
|
var timer = setTimeout(cleanup, 1000);
|
|
process.on('exit', cleanup);
|
|
|
|
server.listen(port);
|
|
server.on('listening', function() {
|
|
var c = net.createConnection(port);
|
|
|
|
c.setEncoding('utf8');
|
|
|
|
c.on('connect', function() {
|
|
c.write(request_generator());
|
|
});
|
|
|
|
c.on('data', function(chunk) {
|
|
server_response.data += chunk;
|
|
server_response.chunks.push(chunk);
|
|
});
|
|
|
|
c.on('end', function() {
|
|
client_got_eof = true;
|
|
c.end();
|
|
server.close();
|
|
clearTimeout(timer);
|
|
process.removeListener('exit', cleanup);
|
|
response_validator(server_response, client_got_eof, false);
|
|
});
|
|
});
|
|
}
|
|
|
|
(function() {
|
|
function handler(req, res) {
|
|
assert.equal('1.0', req.httpVersion);
|
|
assert.equal(1, req.httpVersionMajor);
|
|
assert.equal(0, req.httpVersionMinor);
|
|
res.writeHead(200, {'Content-Type': 'text/plain'});
|
|
res.end(body);
|
|
}
|
|
|
|
function request_generator() {
|
|
return 'GET / HTTP/1.0\r\n\r\n';
|
|
}
|
|
|
|
function response_validator(server_response, client_got_eof, timed_out) {
|
|
var m = server_response.data.split('\r\n\r\n');
|
|
assert.equal(m[1], body);
|
|
assert.equal(true, client_got_eof);
|
|
assert.equal(false, timed_out);
|
|
}
|
|
|
|
test(handler, request_generator, response_validator);
|
|
})();
|
|
|
|
//
|
|
// Don't send HTTP/1.1 status lines to HTTP/1.0 clients.
|
|
//
|
|
// https://github.com/joyent/node/issues/1234
|
|
//
|
|
(function() {
|
|
function handler(req, res) {
|
|
assert.equal('1.0', req.httpVersion);
|
|
assert.equal(1, req.httpVersionMajor);
|
|
assert.equal(0, req.httpVersionMinor);
|
|
res.sendDate = false;
|
|
res.writeHead(200, {'Content-Type': 'text/plain'});
|
|
res.write('Hello, '); res._send('');
|
|
res.write('world!'); res._send('');
|
|
res.end();
|
|
}
|
|
|
|
function request_generator() {
|
|
return ('GET / HTTP/1.0\r\n' +
|
|
'User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 ' +
|
|
'OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15\r\n' +
|
|
'Host: 127.0.0.1:1337\r\n' +
|
|
'Accept: */*\r\n' +
|
|
'\r\n');
|
|
}
|
|
|
|
function response_validator(server_response, client_got_eof, timed_out) {
|
|
var expected_response = ('HTTP/1.1 200 OK\r\n' +
|
|
'Content-Type: text/plain\r\n' +
|
|
'Connection: close\r\n' +
|
|
'\r\n' +
|
|
'Hello, world!');
|
|
|
|
assert.equal(expected_response, server_response.data);
|
|
assert.equal(1, server_response.chunks.length);
|
|
assert.equal(true, client_got_eof);
|
|
assert.equal(false, timed_out);
|
|
}
|
|
|
|
test(handler, request_generator, response_validator);
|
|
})();
|
|
|
|
(function() {
|
|
function handler(req, res) {
|
|
assert.equal('1.1', req.httpVersion);
|
|
assert.equal(1, req.httpVersionMajor);
|
|
assert.equal(1, req.httpVersionMinor);
|
|
res.sendDate = false;
|
|
res.writeHead(200, {'Content-Type': 'text/plain'});
|
|
res.write('Hello, '); res._send('');
|
|
res.write('world!'); res._send('');
|
|
res.end();
|
|
}
|
|
|
|
function request_generator() {
|
|
return ('GET / HTTP/1.1\r\n' +
|
|
'User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 ' +
|
|
'OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15\r\n' +
|
|
'Connection: close\r\n' +
|
|
'Host: 127.0.0.1:1337\r\n' +
|
|
'Accept: */*\r\n' +
|
|
'\r\n');
|
|
}
|
|
|
|
function response_validator(server_response, client_got_eof, timed_out) {
|
|
var expected_response = ('HTTP/1.1 200 OK\r\n' +
|
|
'Content-Type: text/plain\r\n' +
|
|
'Connection: close\r\n' +
|
|
'Transfer-Encoding: chunked\r\n' +
|
|
'\r\n' +
|
|
'7\r\n' +
|
|
'Hello, \r\n' +
|
|
'6\r\n' +
|
|
'world!\r\n' +
|
|
'0\r\n' +
|
|
'\r\n');
|
|
|
|
assert.equal(expected_response, server_response.data);
|
|
assert.equal(1, server_response.chunks.length);
|
|
assert.equal(true, client_got_eof);
|
|
assert.equal(false, timed_out);
|
|
}
|
|
|
|
test(handler, request_generator, response_validator);
|
|
})();
|