diff --git a/index.js b/index.js index 7f214db..f9f7cad 100644 --- a/index.js +++ b/index.js @@ -10,7 +10,7 @@ const Lws = require('lws') class LocalWebServer extends Lws { _getDefaultConfig () { return Object.assign(super._getDefaultConfig(), { - moduleDir: [ __dirname, '.' ], + moduleDir: [ '.', __dirname ], stack: require('./lib/default-stack') }) } diff --git a/lib/cli-app.js b/lib/cli-app.js index 6744288..f466581 100644 --- a/lib/cli-app.js +++ b/lib/cli-app.js @@ -14,7 +14,7 @@ class WsCli extends LwsCli { getDefaultOptions () { return Object.assign(super.getDefaultOptions(), { stack: require('./default-stack').slice(), - moduleDir: [ path.resolve(__dirname, '..'), '.' ] + moduleDir: [ '.', path.resolve(__dirname, '..') ] }) } diff --git a/package-lock.json b/package-lock.json index f21db54..e4174bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -550,9 +550,9 @@ "optional": true }, "common-log-format": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/common-log-format/-/common-log-format-0.1.4.tgz", - "integrity": "sha512-BXcgq+wzr2htmBmnT7cL7YHzPAWketWbr4kozjoM9kWe4sk3+zMgjcH0HO+EddjDlEw2LZysqLpVRwbF318tDw==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-log-format/-/common-log-format-1.0.0.tgz", + "integrity": "sha512-fFn/WPNbsTCGTTwdCpZfVZSa5mgqMEkA0gMTRApFSlEsYN+9B2FPfiqch5FT+jsv5IV1RHV3GeZvCa7Qg+jssw==" }, "common-sequence": { "version": "1.0.2", @@ -1808,9 +1808,9 @@ } }, "lws": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lws/-/lws-2.0.0.tgz", - "integrity": "sha512-OgAJ7Od6nteHv1p8QQPc28xFNZrPLBkyOu8lHsVH0Eo4qYPiY/401LHnIKwJEAQZAV8YF0lSL7/mtSxAM+mAVg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lws/-/lws-2.0.1.tgz", + "integrity": "sha512-9aXsOibjPeHxb9xfPws5beM2YAyRW4QWj9rORBKOe/W9Pca67Ftx8zPSyUsgLTo7QUFi6hFK/J+xCYnvzGMzzw==", "requires": { "ansi-escape-sequences": "^4.1.0", "array-back": "^3.1.0", @@ -1895,12 +1895,12 @@ } }, "lws-log": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lws-log/-/lws-log-1.0.2.tgz", - "integrity": "sha512-bJVcNiO43nnVtC/+QSnH1noNfBfgXJc98uLwCgofeDieTcQ56fWi+lX3DdXP5yN7p8J4ZrKVFBraA93TOF+p1g==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lws-log/-/lws-log-1.0.3.tgz", + "integrity": "sha512-lxOsQgXbWd7Xwny5dVZnYUu7b6nSoT3o5A+OEuktxomEAG7Eirb6o8eOkeTMbfhE9/qfviXb5W2rFDcWk+UAlA==", "requires": { "koa-morgan": "^1.0.1", - "stream-log-stats": "^3.0.0" + "stream-log-stats": "^3.0.1" } }, "lws-mime": { @@ -2686,9 +2686,9 @@ } }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -2957,14 +2957,14 @@ } }, "stream-log-stats": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-log-stats/-/stream-log-stats-3.0.0.tgz", - "integrity": "sha512-rv7anqmc2fYKfCkLeISQbtw1ebyiapl34AltF04cknL/l1IGbffAB0DN2NvH3ec57kXwzJBOK6ZsjxP41Ai5IA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stream-log-stats/-/stream-log-stats-3.0.1.tgz", + "integrity": "sha512-FmaeaSGmhuYkYfD9HAnTJxmqH2nASpUvYl4/KiWF5mOUW3i0EEfqWJOka20M/rLKotsl8HEQM3OtNqd2xZnZfQ==", "requires": { "JSONStream": "^1.3.5", "ansi-escape-sequences": "^4.1.0", "byte-size": "^5.0.1", - "common-log-format": "~0.1.4", + "common-log-format": "^1.0.0", "lodash.throttle": "^4.1.1", "stream-via": "^1.0.4", "table-layout": "~0.4.4" @@ -3438,9 +3438,9 @@ } }, "yargs-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", - "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index 918f2e7..a38af16 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "index.js" ], "dependencies": { - "lws": "2.0.0", + "lws": "^2.0.1", "lws-basic-auth": "^1.0.3", "lws-blacklist": "^2.0.2", "lws-body-parser": "^1.0.2", @@ -48,7 +48,7 @@ "lws-cors": "^2.0.1", "lws-index": "^1.0.4", "lws-json": "^1.0.1", - "lws-log": "^1.0.2", + "lws-log": "^1.0.3", "lws-mime": "^1.0.1", "lws-range": "^2.0.1", "lws-request-monitor": "^1.0.4", diff --git a/test/test.js b/test/api.js similarity index 91% rename from test/test.js rename to test/api.js index 161b82c..3b42bb7 100644 --- a/test/test.js +++ b/test/api.js @@ -3,7 +3,7 @@ const fetch = require('node-fetch') const LocalWebServer = require('../') const a = require('assert') -const tom = module.exports = new Tom('test') +const tom = module.exports = new Tom('api') tom.test('basic', async function () { const port = 9000 + this.index diff --git a/test/cli.js b/test/cli.js index 8cd3b6c..b927642 100644 --- a/test/cli.js +++ b/test/cli.js @@ -3,56 +3,41 @@ const a = require('assert') const WsCli = require('../lib/cli-app') const fetch = require('node-fetch') -const tom = module.exports = new Tom('cli') +const tom = module.exports = new Tom('cli', { concurrency: 1 }) -tom.test('cli.run', async function () { +tom.test('simple', async function () { const port = 7500 + this.index - const origArgv = process.argv.slice() - process.argv = [ 'node', 'something', '--port', `${port}` ] const cli = new WsCli({ logError: function () {} }) - const server = cli.start() - process.argv = origArgv + const server = cli.start([ '--port', `${port}` ]) const response = await fetch(`http://127.0.0.1:${port}/package.json`) server.close() a.strictEqual(response.status, 200) }) -tom.test('cli.run: bad option', async function () { - const origArgv = process.argv.slice() - process.argv = [ 'node', 'something', '--should-fail' ] +tom.test('bad option', async function () { const exitCode = process.exitCode const cli = new WsCli({ logError: function () {} }) - const server = cli.start() + const server = cli.start([ '--should-fail' ]) if (!exitCode) process.exitCode = 0 - process.argv = origArgv a.strictEqual(server, undefined) }) -tom.test('cli.run: --help', async function () { - const origArgv = process.argv.slice() - process.argv = [ 'node', 'something', '--help' ] +tom.test('--help', async function () { const cli = new WsCli({ log: function () {} }) - cli.start() - process.argv = origArgv + cli.start([ '--help' ]) }) -tom.test('cli.run: --version', async function () { - const origArgv = process.argv.slice() - process.argv = [ 'node', 'something', '--version' ] +tom.test('--version', async function () { let logMsg = '' const cli = new WsCli({ log: function (msg) { logMsg = msg } }) - cli.start() + cli.start([ '--version' ]) const pkg = require('../package.json') a.strictEqual(logMsg.trim(), pkg.version) - process.argv = origArgv }) -tom.test('cli.run: default-stack', async function () { - const origArgv = process.argv.slice() - process.argv = [ 'node', 'something', '--default-stack' ] +tom.test('default-stack', async function () { let logMsg = '' const cli = new WsCli({ log: function (msg) { logMsg = msg } }) - cli.start() + cli.start([ '--default-stack' ]) a.ok(/lws-static/.test(logMsg)) - process.argv = origArgv }) diff --git a/test/fixture/middleware/index.js b/test/fixture/middleware/index.js new file mode 100644 index 0000000..03e7f87 --- /dev/null +++ b/test/fixture/middleware/index.js @@ -0,0 +1,3 @@ +class TestMiddleware {} + +module.exports = TestMiddleware diff --git a/test/sequential.js b/test/sequential.js new file mode 100644 index 0000000..0d12b99 --- /dev/null +++ b/test/sequential.js @@ -0,0 +1,35 @@ +const Tom = require('test-runner').Tom +const fetch = require('node-fetch') +const LocalWebServer = require('../') +const WsCli = require('../lib/cli-app') +const a = require('assert') + +const tom = module.exports = new Tom('sequential', { concurrency: 1 }) + +let origCwd = '' + +tom.test('before', async function () { + origCwd = process.cwd() + process.chdir('test/fixture/middleware') +}) + +tom.test('cli: middleware named "index.js"', async function () { + let logMsg = '' + const cli = new WsCli({ log: function (msg) { logMsg = msg } }) + const lws = cli.start([ '--stack', 'index.js', '--config' ]) + a.ok(/TestMiddleware/.test(logMsg)) +}) + +tom.test('basic', async function () { + const port = 9100 + this.index + const ws = LocalWebServer.create({ + port: port, + stack: 'index.js' + }) + ws.server.close() + a.strictEqual(ws.stack[0].constructor.name, 'TestMiddleware') +}) + +tom.test('after', async function () { + process.chdir(origCwd) +})