Tracking de l'application VApp (IHM du jeu)
This commit is contained in:
316
VApp/node_modules/help-me/test.js
generated
vendored
Normal file
316
VApp/node_modules/help-me/test.js
generated
vendored
Normal file
@ -0,0 +1,316 @@
|
||||
'use strict'
|
||||
|
||||
const test = require('tape')
|
||||
const concat = require('concat-stream')
|
||||
const fs = require('fs')
|
||||
const os = require('os')
|
||||
const path = require('path')
|
||||
const helpMe = require('./')
|
||||
const proxyquire = require('proxyquire')
|
||||
|
||||
test('throws if no directory is passed', function (t) {
|
||||
try {
|
||||
helpMe()
|
||||
t.fail()
|
||||
} catch (err) {
|
||||
t.equal(err.message, 'missing dir')
|
||||
}
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('throws if a normal file is passed', function (t) {
|
||||
try {
|
||||
helpMe({
|
||||
dir: __filename
|
||||
})
|
||||
t.fail()
|
||||
} catch (err) {
|
||||
t.equal(err.message, `${__filename} is not a directory`)
|
||||
}
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('throws if the directory cannot be accessed', function (t) {
|
||||
try {
|
||||
helpMe({
|
||||
dir: './foo'
|
||||
})
|
||||
t.fail()
|
||||
} catch (err) {
|
||||
t.equal(err.message, './foo is not a directory')
|
||||
}
|
||||
t.end()
|
||||
})
|
||||
|
||||
test('show a generic help.txt from a folder to a stream with relative path in dir', function (t) {
|
||||
t.plan(2)
|
||||
|
||||
helpMe({
|
||||
dir: 'fixture/basic'
|
||||
}).createStream()
|
||||
.pipe(concat(function (data) {
|
||||
fs.readFile('fixture/basic/help.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
||||
test('show a generic help.txt from a folder to a stream with absolute path in dir', function (t) {
|
||||
t.plan(2)
|
||||
|
||||
helpMe({
|
||||
dir: path.join(__dirname, 'fixture/basic')
|
||||
}).createStream()
|
||||
.pipe(concat(function (data) {
|
||||
fs.readFile('fixture/basic/help.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
||||
test('custom help command with an array', function (t) {
|
||||
t.plan(2)
|
||||
|
||||
helpMe({
|
||||
dir: 'fixture/basic'
|
||||
}).createStream(['hello'])
|
||||
.pipe(concat(function (data) {
|
||||
fs.readFile('fixture/basic/hello.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
||||
test('custom help command without an ext', function (t) {
|
||||
t.plan(2)
|
||||
|
||||
helpMe({
|
||||
dir: 'fixture/no-ext',
|
||||
ext: ''
|
||||
}).createStream(['hello'])
|
||||
.pipe(concat(function (data) {
|
||||
fs.readFile('fixture/no-ext/hello', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
||||
test('custom help command with a string', function (t) {
|
||||
t.plan(2)
|
||||
|
||||
helpMe({
|
||||
dir: 'fixture/basic'
|
||||
}).createStream('hello')
|
||||
.pipe(concat(function (data) {
|
||||
fs.readFile('fixture/basic/hello.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
||||
test('missing help file', function (t) {
|
||||
t.plan(1)
|
||||
|
||||
helpMe({
|
||||
dir: 'fixture/basic'
|
||||
}).createStream('abcde')
|
||||
.on('error', function (err) {
|
||||
t.equal(err.message, 'no such help file')
|
||||
})
|
||||
.resume()
|
||||
})
|
||||
|
||||
test('custom help command with an array', function (t) {
|
||||
const helper = helpMe({
|
||||
dir: 'fixture/shortnames'
|
||||
})
|
||||
|
||||
t.test('abbreviates two words in one', function (t) {
|
||||
t.plan(2)
|
||||
|
||||
helper
|
||||
.createStream(['world'])
|
||||
.pipe(concat(function (data) {
|
||||
fs.readFile('fixture/shortnames/hello world.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
||||
t.test('abbreviates three words in two', function (t) {
|
||||
t.plan(2)
|
||||
|
||||
helper
|
||||
.createStream(['abcde', 'fghi'])
|
||||
.pipe(concat(function (data) {
|
||||
fs.readFile('fixture/shortnames/abcde fghi lmno.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
||||
t.test('abbreviates a word', function (t) {
|
||||
t.plan(2)
|
||||
|
||||
helper
|
||||
.createStream(['abc', 'fg'])
|
||||
.pipe(concat(function (data) {
|
||||
fs.readFile('fixture/shortnames/abcde fghi lmno.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
||||
t.test('abbreviates a word using strings', function (t) {
|
||||
t.plan(2)
|
||||
|
||||
helper
|
||||
.createStream('abc fg')
|
||||
.pipe(concat(function (data) {
|
||||
fs.readFile('fixture/shortnames/abcde fghi lmno.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
}))
|
||||
})
|
||||
|
||||
t.test('print a disambiguation', function (t) {
|
||||
t.plan(1)
|
||||
|
||||
const expected = '' +
|
||||
'There are 2 help pages that matches the given request, please disambiguate:\n' +
|
||||
' * abcde fghi lmno\n' +
|
||||
' * abcde hello\n'
|
||||
|
||||
helper
|
||||
.createStream(['abc'])
|
||||
.pipe(concat({ encoding: 'string' }, function (data) {
|
||||
t.equal(data, expected)
|
||||
}))
|
||||
})
|
||||
|
||||
t.test('choose exact match over partial', function (t) {
|
||||
t.plan(1)
|
||||
|
||||
helpMe({
|
||||
dir: 'fixture/sameprefix'
|
||||
}).createStream(['hello'])
|
||||
.pipe(concat({ encoding: 'string' }, function (data) {
|
||||
t.equal(data, 'hello')
|
||||
}))
|
||||
})
|
||||
})
|
||||
|
||||
test('toStdout helper', async function (t) {
|
||||
t.plan(2)
|
||||
|
||||
let completed = false
|
||||
const stream = concat(function (data) {
|
||||
completed = true
|
||||
fs.readFile('fixture/basic/help.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
})
|
||||
|
||||
await helpMe({
|
||||
dir: 'fixture/basic'
|
||||
}).toStdout([], { stream })
|
||||
|
||||
t.ok(completed)
|
||||
})
|
||||
|
||||
test('handle error in toStdout', async function (t) {
|
||||
t.plan(2)
|
||||
|
||||
let completed = false
|
||||
const stream = concat(function (data) {
|
||||
completed = true
|
||||
fs.readFile('fixture/basic/help.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), 'no such help file: something.\n\n' + expected.toString())
|
||||
})
|
||||
})
|
||||
|
||||
await helpMe({
|
||||
dir: 'fixture/basic'
|
||||
}).toStdout(['something'], {
|
||||
stream
|
||||
})
|
||||
|
||||
t.ok(completed)
|
||||
})
|
||||
|
||||
test('customize missing help fle message', async function (t) {
|
||||
t.plan(3)
|
||||
|
||||
const stream = concat(function (data) {
|
||||
t.equal(data.toString(), 'kaboom\n\n')
|
||||
})
|
||||
|
||||
await helpMe({
|
||||
dir: 'fixture/basic'
|
||||
}).toStdout(['something'], {
|
||||
stream,
|
||||
async onMissingHelp (err, args, stream) {
|
||||
t.equal(err.message, 'no such help file')
|
||||
t.deepEquals(args, ['something'])
|
||||
stream.end('kaboom\n\n')
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
test('toStdout without factory', async function (t) {
|
||||
t.plan(2)
|
||||
|
||||
let completed = false
|
||||
const stream = concat(function (data) {
|
||||
completed = true
|
||||
fs.readFile('fixture/basic/help.txt', function (err, expected) {
|
||||
t.error(err)
|
||||
t.equal(data.toString(), expected.toString())
|
||||
})
|
||||
})
|
||||
|
||||
await helpMe.help({
|
||||
dir: 'fixture/basic',
|
||||
stream
|
||||
}, [])
|
||||
|
||||
t.ok(completed)
|
||||
})
|
||||
|
||||
test('should allow for awaiting the response with default stdout stream', async function (t) {
|
||||
t.plan(2)
|
||||
|
||||
const _process = Object.create(process)
|
||||
const stdout = Object.create(process.stdout)
|
||||
Object.defineProperty(_process, 'stdout', {
|
||||
value: stdout
|
||||
})
|
||||
|
||||
let completed = false
|
||||
stdout.write = (data, cb) => {
|
||||
t.equal(data.toString(), 'hello world' + os.EOL)
|
||||
completed = true
|
||||
cb()
|
||||
}
|
||||
|
||||
const helpMe = proxyquire('./help-me', {
|
||||
process: _process
|
||||
})
|
||||
|
||||
await helpMe.help({
|
||||
dir: 'fixture/basic'
|
||||
})
|
||||
|
||||
t.ok(completed)
|
||||
})
|
Reference in New Issue
Block a user