const path = require('path'); const crossSpawn = require('cross-spawn'); const test = require('ava'); const logo = require('../lib/utils/output/logo'); test.serial('make binary', async t => { if (!process.env.CI) return; // eslint-disable-line curly const result = await spawn('npm', ['run', 'pack']); t.is(result.code, 0); }); const binary = { darwin: 'now-macos', linux: 'now-linux', win32: 'now-win.exe' }[process.platform]; const binaryPath = path.resolve(__dirname, '../packed/' + binary); const deployHelpMessage = `${logo} now [options] `; test.serial('packed "now help" prints deploy help message', async t => { if (!process.env.CI) return; // eslint-disable-line curly const result = await spawn(binaryPath, ['help']); t.is(result.code, 0); const stdout = result.stdout.split('\n'); t.true(stdout.length > 1); t.true(stdout[1].includes(deployHelpMessage)); }); function spawn(command, args) { return new Promise((resolve, reject) => { const child = crossSpawn.spawn(command, args); let stdout = ''; child.stdout.on('data', data => { stdout += data; }); child.on('error', err => { reject(err); }); child.on('close', code => { resolve({ code, stdout }); }); }); }