From 65274a613d64d39b6b031fe73c4a64b72853a034 Mon Sep 17 00:00:00 2001 From: Erik Trom Date: Fri, 14 Mar 2025 02:04:52 -0700 Subject: [PATCH 1/2] if `startPort` is provided by user, actually use it fixes #173 --- lib/portfinder.js | 2 +- test/port-finder.test.js | 62 ++++++++++++++++++++++++---------------- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/lib/portfinder.js b/lib/portfinder.js index e692947..e6fbbba 100644 --- a/lib/portfinder.js +++ b/lib/portfinder.js @@ -124,7 +124,7 @@ exports.setBasePath = function (path) { }; internals.getPort = function (options, callback) { - options.port = Number(options.port) || Number(exports.basePort); + options.port = Number(options.port) || Number(options.startPort) || Number(exports.basePort); options.host = options.host || null; options.stopPort = Number(options.stopPort) || Number(exports.highestPort); diff --git a/test/port-finder.test.js b/test/port-finder.test.js index b463780..abf1b7e 100644 --- a/test/port-finder.test.js +++ b/test/port-finder.test.js @@ -10,7 +10,8 @@ const portfinder = require('../lib/portfinder'), helper = require('./helper'); -portfinder.basePort = 32768; +const basePort = 32768; +portfinder.basePort = basePort; describe('with 5 existing servers', function () { const servers = []; @@ -152,32 +153,43 @@ describe('with no existing servers', function () { }); }); -describe.each([ - ['getPort()', false, portfinder.getPort], - ['getPort()', true, portfinder.getPort], - ['getPortPromise()', true, portfinder.getPortPromise], -])(`the %s method (promise: %p)`, function (name, isPromise, method) { - test('with startPort less than or equal to 80', function (done) { - if (isPromise) { - method({ startPort: 80 }) - .then(function (port) { - expect(port).toBeGreaterThanOrEqual(80); + +describe('with startPort provided', function () { + beforeEach(function (done) { + portfinder.basePort = 8000; + done(); + }); + afterEach(function (done) { + portfinder.basePort = basePort; + done(); + }); + describe.each([ + ['getPort()', false, portfinder.getPort], + ['getPort()', true, portfinder.getPort], + ['getPortPromise()', true, portfinder.getPortPromise], + ])(`the %s method (promise: %p)`, function (name, isPromise, method) { + test('with startPort less than or equal to 9050', function (done) { + if (isPromise) { + method({ startPort: 9050 }) + .then(function (port) { + expect(port).toBeGreaterThanOrEqual(9050); + done(); + }) + .catch(function (err) { + done(err); + }); + } else { + method({ startPort: 9050 }, function (err, port) { + if (err) { + done(err); + return; + } + expect(err).toBeNull(); + expect(port).toBeGreaterThanOrEqual(9050); done(); - }) - .catch(function (err) { - done(err); }); - } else { - method({ startPort: 80 }, function (err, port) { - if (err) { - done(err); - return; - } - expect(err).toBeNull(); - expect(port).toBeGreaterThanOrEqual(80); - done(); - }); - } + } + }); }); }); From 8523a9c13c02ffe31b6c6bfd70160d17262a39c8 Mon Sep 17 00:00:00 2001 From: Erik Trom Date: Fri, 14 Mar 2025 09:31:23 -0700 Subject: [PATCH 2/2] Update test/port-finder.test.js Use beforeAll/afterAll w/o done callback in test setup/teardown per pr review feedback Co-authored-by: Matthew Peveler --- test/port-finder.test.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/port-finder.test.js b/test/port-finder.test.js index abf1b7e..48a61c3 100644 --- a/test/port-finder.test.js +++ b/test/port-finder.test.js @@ -155,13 +155,11 @@ describe('with no existing servers', function () { describe('with startPort provided', function () { - beforeEach(function (done) { + beforeAll(function () { portfinder.basePort = 8000; - done(); }); - afterEach(function (done) { + afterAll(function () { portfinder.basePort = basePort; - done(); }); describe.each([ ['getPort()', false, portfinder.getPort],