UNPKG

script-chain

Version:
96 lines (83 loc) 2.55 kB
const test = require('ava') const {fosho, log} = require('fosho') const {ScriptChain} = require('../src') // https://github.com/npm/npm/issues/3494 test('npm auto adds doubledash/groups', t => { const scripts = new ScriptChain().add().npm('diggy').arg('--eh') fosho(scripts.toCmd().args, t).includes('--') }) test('using npm created multiple grouped flags', t => { const scripts = new ScriptChain() const script = scripts .add() .npm('diggy') .env('magic') .flag('env.zoolala', 'aoao') .arg('-e') // log.bold('npm').stringify({scripts, script}).echo() const data = Object.values(scripts.scripts).pop() t.pass(fosho(data.get('npm')).eq('diggy')) }) test('script-chain creates expected result', t => { const scripts = new ScriptChain() scripts.add().npm('diggy').env('magic').flag('env.zoolala', 'aoao').arg('-e') const cmd = scripts.toCmd() const env = {} env.NODE_ENV = 'magic' env.PATH = process.env.PATH const expected = [ { bin: 'npm', args: ['run-script', 'diggy', '--', '--env.zoolala=aoao', '-e'], env, }, ] const actual = cmd.pop() const expect = expected.pop() t.deepEqual(actual.bin, expect.bin) t.deepEqual(actual.args, expect.args) // this fails when using Object.create! t.deepEqual(actual.env, expect.env) t.deepEqual(actual.env.NODE_ENV, expect.env.NODE_ENV) t.deepEqual(actual.env.PATH, expect.env.PATH) t.deepEqual(Object.keys(actual.env), Object.keys(expect.env)) t.deepEqual(Object.values(actual.env), Object.values(expect.env)) t.deepEqual(Object.keys(actual.bin), Object.keys(expect.bin)) // log.quick( // Object.keys(actual.env), // Object.keys(expect.env), // Object.values(actual.env), // Object.values(expect.env) // ) // log.quick(actual, expect) // t.deepEqual(actual, expect) // t.deepEqual(actual, expect) // t.true(Object.is(actual, expect)) }) test.skip('something else', t => { const scripts = new ScriptChain() scripts .add() .file('./diggy.js') .raw('--') .flag('env.zoolala', 'oaaaa') .envs('magicfile') .arg('-e') // console.log(scripts.toString()) // log.quick(scripts.toString()) // log.quick(scripts.toCmd()) // --- // .envDefine('prod') // .envArg('prod') // .run('name') // .parent // .exec() // --- // log.quick(scripts.toString()) // const data = log.json(log.stringify(scripts).returnVals()).echo() // --- // // .binPath('../../') // .nodeBinPath('../../node_modules/.bin/') // not needed // log.quick(data) })