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.
116 lines
3.5 KiB
116 lines
3.5 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 util = require('./lib/util') |
|
const runAll = util.runAll |
|
const runPar = util.runPar |
|
const runSeq = util.runSeq |
|
|
|
// ------------------------------------------------------------------------------ |
|
// Test |
|
// ------------------------------------------------------------------------------ |
|
|
|
describe('[aggregated-output] npm-run-all', () => { |
|
before(() => process.chdir('test-workspace')) |
|
after(() => process.chdir('..')) |
|
|
|
/** |
|
* create expected text |
|
* @param {string} term the term to use when creating a line |
|
* @returns {string} the complete line |
|
*/ |
|
function createExpectedOutput (term) { |
|
return `[${term}]__[${term}]` |
|
} |
|
|
|
describe('should not intermingle output of various commands', () => { |
|
const EXPECTED_PARALLELIZED_TEXT = [ |
|
createExpectedOutput('second'), |
|
createExpectedOutput('third'), |
|
createExpectedOutput('first'), |
|
'', |
|
].join('\n') |
|
|
|
let stdout = null |
|
|
|
beforeEach(() => { |
|
stdout = new BufferStream() |
|
}) |
|
|
|
it('Node API with parallel', async () => { |
|
await nodeApi( |
|
['test-task:delayed first 5000', 'test-task:delayed second 1000', 'test-task:delayed third 3000'], |
|
{ stdout, parallel: true, silent: true, aggregateOutput: true } |
|
) |
|
assert.equal(stdout.value, EXPECTED_PARALLELIZED_TEXT) |
|
}) |
|
|
|
it('Node API without parallel should fail', async () => { |
|
try { |
|
await nodeApi( |
|
['test-task:delayed first 5000', 'test-task:delayed second 1000', 'test-task:delayed third 3000'], |
|
{ stdout, silent: true, aggregateOutput: true } |
|
) |
|
} catch (_err) { |
|
return |
|
} |
|
assert(false, 'should fail') |
|
}) |
|
|
|
it('npm-run-all command with parallel', async () => { |
|
await runAll( |
|
['--parallel', 'test-task:delayed first 5000', 'test-task:delayed second 1000', 'test-task:delayed third 3000', '--silent', '--aggregate-output'], |
|
stdout |
|
) |
|
assert.equal(stdout.value, EXPECTED_PARALLELIZED_TEXT) |
|
}) |
|
|
|
it('npm-run-all command without parallel should fail', async () => { |
|
try { |
|
await runAll( |
|
['test-task:delayed first 5000', 'test-task:delayed second 1000', 'test-task:delayed third 3000', '--silent', '--aggregate-output'], |
|
stdout |
|
) |
|
} catch (_err) { |
|
return |
|
} |
|
assert(false, 'should fail') |
|
}) |
|
|
|
it('run-s command should fail', async () => { |
|
try { |
|
await runSeq( |
|
['test-task:delayed first 5000', 'test-task:delayed second 1000', 'test-task:delayed third 3000', '--silent', '--aggregate-output'], |
|
stdout |
|
) |
|
} catch (_err) { |
|
return |
|
} |
|
assert(false, 'should fail') |
|
}) |
|
|
|
it('run-p command', async () => { |
|
await runPar( |
|
[ |
|
'test-task:delayed first 5000', |
|
'test-task:delayed second 1000', |
|
'test-task:delayed third 3000', |
|
'--silent', '--aggregate-output', |
|
], |
|
stdout |
|
) |
|
assert.equal(stdout.value, EXPECTED_PARALLELIZED_TEXT) |
|
}) |
|
}) |
|
})
|
|
|