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.

91 lines
2.4 KiB

const path = require('path')
const test = require('ava')
const {spawn} = require('cross-spawn')
const logo = require('../lib/utils/output/logo')
const deployHelpMessage = `${logo} now [options] <command | path>`
const aliasHelpMessage = `${logo} now alias <ls | set | rm> <deployment> <alias>`
test('"now help" prints deploy help message', async t => {
const result = await now('help')
t.is(result.code, 0)
const stdout = result.stdout.split('\n')
t.true(stdout.length > 1)
t.true(stdout[1].includes(deployHelpMessage))
})
test('"now --help" prints deploy help message', async t => {
const result = await now('--help')
t.is(result.code, 0)
const stdout = result.stdout.split('\n')
t.true(stdout.length > 1)
t.true(stdout[1].includes(deployHelpMessage))
})
test('"now deploy --help" prints deploy help message', async t => {
const result = await now('deploy', '--help')
t.is(result.code, 0)
const stdout = result.stdout.split('\n')
t.true(stdout.length > 1)
t.true(stdout[1].includes(deployHelpMessage))
})
test('"now --help deploy" prints deploy help message', async t => {
const result = await now('--help', 'deploy')
t.is(result.code, 0)
const stdout = result.stdout.split('\n')
t.true(stdout.length > 1)
t.true(stdout[1].includes(deployHelpMessage))
})
test('"now help alias" prints alias help message', async t => {
const result = await now('help', 'alias')
t.is(result.code, 0)
const stdout = result.stdout.split('\n')
t.true(stdout.length > 1)
t.true(stdout[1].includes(aliasHelpMessage))
})
test('"now alias --help" is the same as "now --help alias"', async t => {
const [result1, result2] = await Promise.all([now('alias', '--help'), now('--help', 'alias')])
t.is(result1.code, 0)
t.is(result1.code, result2.code)
t.is(result1.stdout, result2.stdout)
})
/**
* Run the built now binary with given arguments
*
* @param {String} args string arguements
* @return {Promise} promise that resolves to an object {code, stdout}
*/
function now(...args) {
return new Promise((resolve, reject) => {
Add `now billing` and `now upgrade` (#309) * Add the skeleton of `now cc` * Add the `ls` command * Add `inquirer` dependency * Add the `set-default` command * Fix typo * Show the real number of cards when selecting the default one * Add the `ls` command * Fix: Do not throw if there&#39;s no cards in the account * Add `blessed` dependency * Add the first sketch of `now cc add` * Add instructions * Add labels * Save every element in the `elements` array instead of variables * Tweaks * Fix: update the element attribute if it&#39;s not a special case * Add the `name` input; Add moving between inputs; Make the state more reliable * Auto &#34;detect&#34; if the input is losing focus * Remove useless stuff * Add the ability to move between the fields with tab/shift+tab * Add CCV field * Make the cycling between the fields &#34;infinite&#34; * Add expiration date field and allow only numbers in the CCV field * The form shouldn&#39;t have a fixed height * Add the address box and label * Add the address fields * Remove blessed stuff * Add preliminary input field * output utils * add prompt for booleans * fix @matheuss linting problems * remove example * lint * error and info helpers * helper for embedded commands * Remove useless stuff * Add `trailing` option * Add `resolveChars` option * Add `validate` option * Add `strip-ansi` dependency * Add `credit-card` dependency * Add credit card masking * Add support for expiration date mask * Make things simpler * Add auto completion support * Always show the `card_` id prefix * Add `@google/maps` dependency * Always print the initial value if it&#39;s available * Add `stripe` dependency * Add `add()` method * Add billing related utils * Add `now cc add` * Rename `cc` to `billing` * Fix: log only one blank line * Refactor * Add list input component * This shouldn&#39;t be here * Add `code` output util * Add `now upgrade | downgrade` * add build step * make it more future-proof * more reliable build * remove lock for now * Hide the CCV * Print the new line before `Saving card` * Use the new `success` component * Add confirmation steps for `cc rm` and `cc set-default` * Temporarily monket patch Inquirer * Build before testing * Run the tests using the built files * Fix the `prepublish` script and run the `build` one before packaging * Improve `now help`
8 years ago
const command = path.resolve(__dirname, '../build/bin/now.js')
const now = spawn(command, args)
let stdout = ''
now.stdout.on('data', data => {
stdout += data
})
now.on('error', err => {
reject(err)
})
now.on('close', code => {
resolve({
code,
stdout
})
})
})
}