diff --git a/lib/routes.js b/lib/routes.js index 6d78eda..54369b9 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -9,9 +9,10 @@ included in all copies or substantial portions of this Source Code Form. */ const router = require('koa-route'); +const stringify = require('safe-stable-stringify'); const stripAnsi = require('strip-ansi'); -const prep = (data) => JSON.stringify(data); +const prep = (data) => stringify(data); const statsOptions = { all: false, diff --git a/package-lock.json b/package-lock.json index 7fd8009..2b11e08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10296,6 +10296,12 @@ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", "dev": true }, + "random-js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/random-js/-/random-js-2.1.0.tgz", + "integrity": "sha512-CRUyWmnzmZBA7RZSVGq0xMqmgCyPPxbiKNLFA5ud7KenojVX2s7Gv+V7eB52beKTPGxWRnVZ7D/tCIgYJJ8vNQ==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -10813,6 +10819,11 @@ "ret": "~0.1.10" } }, + "safe-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", + "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==" + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", diff --git a/package.json b/package.json index ba0a0fd..08ca790 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "open": "^7.0.3", "p-defer": "^3.0.0", "rimraf": "^3.0.2", + "safe-stable-stringify": "^1.1.1", "strip-ansi": "^6.0.0", "superstruct": "^0.11.1", "webpack-plugin-ramdisk": "^0.1.2", @@ -77,6 +78,7 @@ "nyc": "^15.0.1", "pre-commit": "^1.2.2", "puppeteer": "^3.0.2", + "random-js": "^2.1.0", "react-refresh": "^0.8.3", "webpack": "^4.44.2", "webpack-nano": "^1.0.0" diff --git a/test/fixtures/multi/webpack.config.js b/test/fixtures/multi/webpack.config.js index 9d13442..43b950b 100644 --- a/test/fixtures/multi/webpack.config.js +++ b/test/fixtures/multi/webpack.config.js @@ -1,12 +1,12 @@ const { resolve } = require('path'); -const getPort = require('get-port'); +const { getPort } = require('../../helpers/port'); const { WebpackPluginServe: Serve } = require('../../../lib/'); const serve = new Serve({ host: 'localhost', - port: getPort({ port: 55555 }) + port: getPort() }); module.exports = [ diff --git a/test/fixtures/ramdisk-empty-pkg/webpack.config.js b/test/fixtures/ramdisk-empty-pkg/webpack.config.js index 3a4d0bb..59c4271 100644 --- a/test/fixtures/ramdisk-empty-pkg/webpack.config.js +++ b/test/fixtures/ramdisk-empty-pkg/webpack.config.js @@ -1,6 +1,6 @@ const { resolve } = require('path'); -const getPort = require('get-port'); +const { getPort } = require('../../helpers/port'); const { WebpackPluginServe: Serve } = require('../../../lib/'); @@ -16,7 +16,7 @@ module.exports = { plugins: [ new Serve({ host: 'localhost', - port: getPort({ port: 55555 }), + port: getPort(), ramdisk: true }) ], diff --git a/test/fixtures/ramdisk/config-context-error.js b/test/fixtures/ramdisk/config-context-error.js index fa0f821..3348781 100644 --- a/test/fixtures/ramdisk/config-context-error.js +++ b/test/fixtures/ramdisk/config-context-error.js @@ -1,6 +1,6 @@ const { resolve } = require('path'); -const getPort = require('get-port'); +const { getPort } = require('../../helpers/port'); const { WebpackPluginServe: Serve } = require('../../../lib/'); @@ -16,7 +16,7 @@ module.exports = { plugins: [ new Serve({ host: 'localhost', - port: getPort({ port: 55555 }), + port: getPort(), ramdisk: true }) ], diff --git a/test/fixtures/ramdisk/config-cwd-error.js b/test/fixtures/ramdisk/config-cwd-error.js index b21c810..123697d 100644 --- a/test/fixtures/ramdisk/config-cwd-error.js +++ b/test/fixtures/ramdisk/config-cwd-error.js @@ -1,6 +1,6 @@ const { resolve } = require('path'); -const getPort = require('get-port'); +const { getPort } = require('../../helpers/port'); const { WebpackPluginServe: Serve } = require('../../../lib/'); @@ -16,7 +16,7 @@ module.exports = { plugins: [ new Serve({ host: 'localhost', - port: getPort({ port: 55555 }), + port: getPort(), ramdisk: true }) ], diff --git a/test/fixtures/ramdisk/custom-options.js b/test/fixtures/ramdisk/custom-options.js index 0961acf..af32db6 100644 --- a/test/fixtures/ramdisk/custom-options.js +++ b/test/fixtures/ramdisk/custom-options.js @@ -1,6 +1,6 @@ const { resolve } = require('path'); -const getPort = require('get-port'); +const { getPort } = require('../../helpers/port'); const { WebpackPluginServe: Serve } = require('../../../lib/'); @@ -16,7 +16,7 @@ module.exports = { plugins: [ new Serve({ host: 'localhost', - port: getPort({ port: 55555 }), + port: getPort(), ramdisk: { bytes: 1024 * 1024 } diff --git a/test/fixtures/ramdisk/webpack.config.js b/test/fixtures/ramdisk/webpack.config.js index 3a4d0bb..59c4271 100644 --- a/test/fixtures/ramdisk/webpack.config.js +++ b/test/fixtures/ramdisk/webpack.config.js @@ -1,6 +1,6 @@ const { resolve } = require('path'); -const getPort = require('get-port'); +const { getPort } = require('../../helpers/port'); const { WebpackPluginServe: Serve } = require('../../../lib/'); @@ -16,7 +16,7 @@ module.exports = { plugins: [ new Serve({ host: 'localhost', - port: getPort({ port: 55555 }), + port: getPort(), ramdisk: true }) ], diff --git a/test/fixtures/simple/webpack.config.js b/test/fixtures/simple/webpack.config.js index e3a089d..0144965 100644 --- a/test/fixtures/simple/webpack.config.js +++ b/test/fixtures/simple/webpack.config.js @@ -1,6 +1,6 @@ const { resolve } = require('path'); -const getPort = require('get-port'); +const { getPort } = require('../../helpers/port'); const { WebpackPluginServe: Serve } = require('../../../lib/'); @@ -19,7 +19,7 @@ module.exports = { 'X-Superhero': 'batman' }, host: 'localhost', - port: getPort({ port: 55555 }) + port: getPort() }) ], resolve: { diff --git a/test/helpers/port.js b/test/helpers/port.js new file mode 100644 index 0000000..b92585f --- /dev/null +++ b/test/helpers/port.js @@ -0,0 +1,8 @@ +const getPort = require('get-port'); +const { Random } = require('random-js'); + +const random = new Random(); + +module.exports = { + getPort: () => getPort({ port: random.integer(55000, 55555) }) +}; diff --git a/test/ramdisk.test.js b/test/ramdisk.test.js index ec8457d..a20764c 100644 --- a/test/ramdisk.test.js +++ b/test/ramdisk.test.js @@ -22,7 +22,7 @@ const waitFor = (text, stream) => { }; }; -test('ramdisk', async (t) => { +test.serial('ramdisk', async (t) => { const proc = execa('wp', [], { cwd: fixturePath }); const { stderr, stdout } = proc; const pathTest = 'Build being written to '; @@ -41,7 +41,7 @@ test('ramdisk', async (t) => { proc.kill('SIGTERM'); }); -test('ramdisk with options', async (t) => { +test.serial('ramdisk with options', async (t) => { const proc = execa('wp', ['--config', 'ramdisk/custom-options.js'], { cwd: resolve(fixturePath, '..') }); @@ -62,7 +62,7 @@ test('ramdisk with options', async (t) => { proc.kill('SIGTERM'); }); -test('context error', async (t) => { +test.serial('context error', async (t) => { try { await execa('wp', ['--config', 'ramdisk/config-context-error.js'], { cwd: resolve(fixturePath, '..') @@ -75,7 +75,7 @@ test('context error', async (t) => { t.fail(); }); -test('cwd error', async (t) => { +test.serial('cwd error', async (t) => { try { await execa('wp', ['--config', '../config-cwd-error.js'], { cwd: join(fixturePath, 'cwd-error') @@ -88,7 +88,7 @@ test('cwd error', async (t) => { t.fail(); }); -test('ramdisk with empty package.json', async (t) => { +test.serial('ramdisk with empty package.json', async (t) => { const fixturePath = join(__dirname, 'fixtures/ramdisk-empty-pkg'); const proc = execa('wp', [], { cwd: fixturePath }); const { stderr, stdout } = proc; diff --git a/test/wait-for-build.test.js b/test/wait-for-build.test.js index d59b3b8..a0e4faa 100644 --- a/test/wait-for-build.test.js +++ b/test/wait-for-build.test.js @@ -1,10 +1,10 @@ -const getPort = require('get-port'); const del = require('del'); const webpack = require('webpack'); const test = require('ava'); const fetch = require('node-fetch'); const defer = require('p-defer'); +const { getPort } = require('./helpers/port'); const { make } = require('./fixtures/wait-for-build/make-config'); let watcher; diff --git a/test/ws.test.js b/test/ws.test.js index 0ae7fa6..1e00dd5 100644 --- a/test/ws.test.js +++ b/test/ws.test.js @@ -1,5 +1,4 @@ const test = require('ava'); -const getPort = require('get-port'); const Koa = require('koa'); const router = require('koa-route'); const defer = require('p-defer'); @@ -7,6 +6,8 @@ const WebSocket = require('ws'); const { middleware } = require('../lib/ws'); +const { getPort } = require('./helpers/port'); + test('websocket middleware', async (t) => { const app = new Koa(); const port = await getPort();