Use random port in test webserver
This commit is contained in:
parent
1280b7b76b
commit
ff8c334207
@ -60,7 +60,7 @@ function parseOptions() {
|
|||||||
.example('$0 --b=firefox -t=issue5567 -t=issue5909',
|
.example('$0 --b=firefox -t=issue5567 -t=issue5909',
|
||||||
'Run the reftest identified by issue5567 and issue5909 in Firefox.')
|
'Run the reftest identified by issue5567 and issue5909 in Firefox.')
|
||||||
.describe('port', 'The port the HTTP server should listen on.')
|
.describe('port', 'The port the HTTP server should listen on.')
|
||||||
.default('port', 8000)
|
.default('port', 0)
|
||||||
.describe('unitTest', 'Run the unit tests.')
|
.describe('unitTest', 'Run the unit tests.')
|
||||||
.describe('fontTest', 'Run the font tests.')
|
.describe('fontTest', 'Run the font tests.')
|
||||||
.describe('noDownload', 'Skips test PDFs downloading.')
|
.describe('noDownload', 'Skips test PDFs downloading.')
|
||||||
|
@ -44,7 +44,7 @@ var defaultMimeType = 'application/octet-stream';
|
|||||||
function WebServer() {
|
function WebServer() {
|
||||||
this.root = '.';
|
this.root = '.';
|
||||||
this.host = 'localhost';
|
this.host = 'localhost';
|
||||||
this.port = 8000;
|
this.port = 0;
|
||||||
this.server = null;
|
this.server = null;
|
||||||
this.verbose = false;
|
this.verbose = false;
|
||||||
this.cacheExpirationTime = 0;
|
this.cacheExpirationTime = 0;
|
||||||
@ -56,6 +56,7 @@ function WebServer() {
|
|||||||
}
|
}
|
||||||
WebServer.prototype = {
|
WebServer.prototype = {
|
||||||
start: function (callback) {
|
start: function (callback) {
|
||||||
|
this._ensureNonZeroPort();
|
||||||
this.server = http.createServer(this._handler.bind(this));
|
this.server = http.createServer(this._handler.bind(this));
|
||||||
this.server.listen(this.port, this.host, callback);
|
this.server.listen(this.port, this.host, callback);
|
||||||
console.log(
|
console.log(
|
||||||
@ -65,6 +66,19 @@ WebServer.prototype = {
|
|||||||
this.server.close(callback);
|
this.server.close(callback);
|
||||||
this.server = null;
|
this.server = null;
|
||||||
},
|
},
|
||||||
|
_ensureNonZeroPort: function () {
|
||||||
|
if (!this.port) {
|
||||||
|
// If port is 0, a random port will be chosen instead. Do not set a host
|
||||||
|
// name to make sure that the port is synchronously set by .listen().
|
||||||
|
var server = http.createServer().listen(0);
|
||||||
|
var address = server.address();
|
||||||
|
// .address().port being available synchronously is merely an
|
||||||
|
// implementation detail. So we are defensive here and fall back to some
|
||||||
|
// fixed port when the address is not available yet.
|
||||||
|
this.port = address ? address.port : 8000;
|
||||||
|
server.close();
|
||||||
|
}
|
||||||
|
},
|
||||||
_handler: function (req, res) {
|
_handler: function (req, res) {
|
||||||
var url = req.url;
|
var url = req.url;
|
||||||
var urlParts = /([^?]*)((?:\?(.*))?)/.exec(url);
|
var urlParts = /([^?]*)((?:\?(.*))?)/.exec(url);
|
||||||
|
Loading…
Reference in New Issue
Block a user