diff --git a/src/vs/base/test/node/port.test.ts b/src/vs/base/test/node/port.test.ts new file mode 100644 index 0000000000000000000000000000000000000000..3259f6d158405606a863667364b2a09ff5e13abc --- /dev/null +++ b/src/vs/base/test/node/port.test.ts @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import * as assert from 'assert'; +import * as net from 'net'; +import ports = require('vs/base/node/ports'); + +suite('Ports', () => { + test('Finds a free port', function (done: () => void) { + + // get an initial freeport >= 7000 + ports.findFreePort(7000, 100, (initialPort) => { + assert.ok(initialPort >= 7000); + + // create a server to block this port + const server = net.createServer(); + server.listen(initialPort, null, null, () => { + + // once listening, find another free port and assert that the port is different from the opened one + ports.findFreePort(7000, 50, (freePort) => { + assert.ok(freePort >= 7000 && freePort !== initialPort); + server.close(); + + done(); + }); + }); + }); + }); +}); \ No newline at end of file