ensure the current working directory is searched first for --stack modules
This commit is contained in:
2
index.js
2
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')
|
||||
})
|
||||
}
|
||||
|
@ -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, '..') ]
|
||||
})
|
||||
}
|
||||
|
||||
|
40
package-lock.json
generated
40
package-lock.json
generated
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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
|
37
test/cli.js
37
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
|
||||
})
|
||||
|
3
test/fixture/middleware/index.js
Normal file
3
test/fixture/middleware/index.js
Normal file
@ -0,0 +1,3 @@
|
||||
class TestMiddleware {}
|
||||
|
||||
module.exports = TestMiddleware
|
35
test/sequential.js
Normal file
35
test/sequential.js
Normal file
@ -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)
|
||||
})
|
Reference in New Issue
Block a user