毕设专用git仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

201 lines
5.7 KiB

/**
* @author Toru Nagashima
* @copyright 2016 Toru Nagashima. All rights reserved.
* See LICENSE file in root directory for full license.
*/
'use strict'
// ------------------------------------------------------------------------------
// Requirements
// ------------------------------------------------------------------------------
const assert = require('assert').strict
const nodeApi = require('../lib')
const BufferStream = require('./lib/buffer-stream')
const { result, removeResult, runAll, runPar, runSeq } = require('./lib/util')
// ------------------------------------------------------------------------------
// Test
// ------------------------------------------------------------------------------
describe('[pattern] it should run matched tasks if glob like patterns are given.', () => {
before(() => process.chdir('test-workspace'))
after(() => process.chdir('..'))
beforeEach(removeResult)
describe('"test-task:append:*" to "test-task:append:a" and "test-task:append:b"', () => {
it('Node API', async () => {
await nodeApi('test-task:append:*')
assert(result() === 'aabb')
})
it('npm-run-all command', async () => {
await runAll(['test-task:append:*'])
assert(result() === 'aabb')
})
it('run-s command', async () => {
await runSeq(['test-task:append:*'])
assert(result() === 'aabb')
})
it('run-p command', async () => {
await runPar(['test-task:append:*'])
assert(
result() === 'abab' ||
result() === 'abba' ||
result() === 'baba' ||
result() === 'baab'
)
})
})
describe('"test-task:append:**:*" to "test-task:append:a", "test-task:append:a:c", "test-task:append:a:d", and "test-task:append:b"', () => {
it('Node API', async () => {
await nodeApi('test-task:append:**:*')
assert(result() === 'aaacacadadbb')
})
it('npm-run-all command', async () => {
await runAll(['test-task:append:**:*'])
assert(result() === 'aaacacadadbb')
})
it('run-s command', async () => {
await runSeq(['test-task:append:**:*'])
assert(result() === 'aaacacadadbb')
})
})
describe('(should ignore duplications) "test-task:append:b" "test-task:append:*" to "test-task:append:b", "test-task:append:a"', () => {
it('Node API', async () => {
await nodeApi(['test-task:append:b', 'test-task:append:*'])
assert(result() === 'bbaa')
})
it('npm-run-all command', async () => {
await runAll(['test-task:append:b', 'test-task:append:*'])
assert(result() === 'bbaa')
})
it('run-s command', async () => {
await runSeq(['test-task:append:b', 'test-task:append:*'])
assert(result() === 'bbaa')
})
it('run-p command', async () => {
await runPar(['test-task:append:b', 'test-task:append:*'])
assert(
result() === 'baba' ||
result() === 'baab' ||
result() === 'abab' ||
result() === 'abba'
)
})
})
describe('"a" should not match to "test-task:append:a"', () => {
it('Node API', async () => {
try {
await nodeApi('a')
assert(false, 'should not match')
} catch (err) {
assert((/not found/i).test(err.message))
}
})
it('npm-run-all command', async () => {
const stderr = new BufferStream()
try {
await runAll(['a'], null, stderr)
assert(false, 'should not match')
} catch (_err) {
assert((/not found/i).test(stderr.value))
}
})
it('run-s command', async () => {
const stderr = new BufferStream()
try {
await runSeq(['a'], null, stderr)
assert(false, 'should not match')
} catch (_err) {
assert((/not found/i).test(stderr.value))
}
})
it('run-p command', async () => {
const stderr = new BufferStream()
try {
await runPar(['a'], null, stderr)
assert(false, 'should not match')
} catch (_err) {
assert((/not found/i).test(stderr.value))
}
})
})
describe('"!test-task:**" should not match to anything', () => {
it('Node API', async () => {
try {
await nodeApi('!test-task:**')
assert(false, 'should not match')
} catch (err) {
assert((/not found/i).test(err.message))
}
})
it('npm-run-all command', async () => {
const stderr = new BufferStream()
try {
await runAll(['!test-task:**'], null, stderr)
assert(false, 'should not match')
} catch (_err) {
assert((/not found/i).test(stderr.value))
}
})
it('run-s command', async () => {
const stderr = new BufferStream()
try {
await runSeq(['!test-task:**'], null, stderr)
assert(false, 'should not match')
} catch (_err) {
assert((/not found/i).test(stderr.value))
}
})
it('run-p command', async () => {
const stderr = new BufferStream()
try {
await runPar(['!test-task:**'], null, stderr)
assert(false, 'should not match')
} catch (_err) {
assert((/not found/i).test(stderr.value))
}
})
})
describe('"!test" "?test" to "!test", "?test"', () => {
it('Node API', async () => {
await nodeApi(['!test', '?test'])
assert(result().trim() === 'XQ')
})
it('npm-run-all command', async () => {
await runAll(['!test', '?test'])
assert(result().trim() === 'XQ')
})
it('run-s command', async () => {
await runSeq(['!test', '?test'])
assert(result().trim() === 'XQ')
})
it('run-p command', async () => {
await runPar(['!test', '?test'])
assert(result().trim() === 'XQ' || result().trim() === 'QX')
})
})
})