How to use execa - 10 common examples

To help you get started, we’ve selected a few execa examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github cypress-io / cypress-test-example-repos / test-repo.js View on Github external
.then((json) => {
  // we need this tool, so save its path right now
  // const cmi = resolve(join('node_modules', '.bin', 'commit-message-install'))

  // need to clone entire repo so we get all branches
  // because we might be testing in a separate branch
  execa.sync(`git clone ${url} ${localFolder}`, execOptions)

  console.log('cloned into folder %s', localFolder)
  shell.cd(localFolder)

  const branch = json && json.branch

  if (branch) {
    console.log('commit message specifies branch to test', branch)
    console.log('trying to switch to remote branch', branch)
    const cmd = `git checkout ${branch}`
    try {
      execa.sync(cmd, execOptions)
    } catch (e) {
      console.error('Caught error trying to do', cmd)
      console.error(e.message)
      console.error('assuming we can work in the default branch')
github flow-typed / flow-typed / definitions / npm / execa_v2.x.x / test_execa_v2.x.x.js View on Github external
it('should accept options', () => {
    execa.commandSync('ls pipe', { stderr: 'pipe' }).then(printStdout);
    execa.commandSync('ls pipe', { stderr: 10 }).then(printStdout);
    execa.commandSync('ls pipe', { input: 'foobar' });
    execa.commandSync('ls pipe', { input: new Buffer('foobar') });
    execa.commandSync('ls pipe', { input: process.stdin });
    // $ExpectError
    execa.commandSync('ls pipe', { foo: 666 });
    // $ExpectError
    execa.commandSync('ls pipe', { input: 42 });
  });
  it('should not accept args', () => {
github nklayman / vue-cli-plugin-electron-builder / __tests__ / commands.spec.js View on Github external
const runSpectron = async (spectronOptions, launchOptions = {}) => {
    let sendData
    execa.mockReturnValueOnce({
      on: jest.fn(),
      stdout: {
        on: (event, callback) => {
          if (event === 'data') {
            // Save callback to be called later
            sendData = callback
          }
        }
      }
    })
    const testPromise = testWithSpectron(spectronOptions)
    // Mock console.log from electron:serve
    if (launchOptions.customLog) await sendData(launchOptions.customLog)
    await sendData(`$outputDir=${launchOptions.outputDir || 'dist_electron'}`)
    await sendData(
      `$WEBPACK_DEV_SERVER_URL=${launchOptions.url || 'http://localhost:8080/'}`
github flow-typed / flow-typed / definitions / npm / execa_v0.10.x / test_execa.js View on Github external
execa(['ls', '-l']).then(printStdout);
// $ExpectError
execa('ls').then(printErrno);

(execa.stdout('ls'): Promise);
execa.stdout('ls').then(stdout => stdout.toLowerCase());
execa.stdout('ls', ['-l']).then(stdout => stdout.toLowerCase());
execa.stdout('ls', { uid: 1000, gid: 100 }).then(stdout => stdout.toLowerCase());
execa.stdout('ls', ['-l'], { timeout: 5 }).then(stdout => stdout.toLowerCase());
// $ExpectError
execa.stdout(['ls', '-l']);
// $ExpectError
execa.stdout('ls', { foo: 666 });

(execa.stderr('ls'): Promise);
execa.stderr('ls').then(stdout => stdout.toLowerCase());
execa.stderr('ls', ['-l']).then(stdout => stdout.toLowerCase());
execa.stderr('ls', { uid: 1000, gid: 100 }).then(stdout => stdout.toLowerCase());
execa.stderr('ls', ['-l'], { timeout: 5 }).then(stdout => stdout.toLowerCase());
// $ExpectError
execa.stderr(['ls', '-l']);
// $ExpectError
execa.stderr('ls', { foo: 666 });

(execa.shell('ls | wc -l'): ThenableChildProcess);
execa.shell('ls | wc -l').then(printStdout, printErrno);
execa.shell('ls | wc -l', { cwd: '/' }).then(printStdout);
execa.shell('foo').catch(printErrno);
// $ExpectError
execa.shell(['ls', 'wc -l']);
// $ExpectError
execa.stderr('ls', 'wc -l', { foo: 666 });
github flow-typed / flow-typed / definitions / npm / execa_v0.10.x / test_execa.js View on Github external
execa.shell('ls | wc -l').then(printStdout, printErrno);
execa.shell('ls | wc -l', { cwd: '/' }).then(printStdout);
execa.shell('foo').catch(printErrno);
// $ExpectError
execa.shell(['ls', 'wc -l']);
// $ExpectError
execa.stderr('ls', 'wc -l', { foo: 666 });

(execa.sync('ls'): SyncResult);
(execa.sync('ls', ['-l']).stdout: string);
(execa.sync('ls', { stderr: 'pipe' }).signal: ?string);
(execa.sync('ls', ['-l'], { localDir: '~/' }).failed: boolean);
// $ExpectError
execa.sync(['ls']);
// $ExpectError
execa.stderr('ls', { foo: 666 });
// $ExpectError
execa.sync('ls').killed;
// $ExpectError
execa.sync('ls', { input: process.stdin });

(execa.shellSync('ls | wc -l'): SyncResult);
(execa.shellSync('ls | wc -l', { stderr: 'ignore' }).stdout: string);
// $ExpectError
execa.shellSync(['ls', 'wc -l']);
// $ExpectError
execa.shellSync('ls', { foo: 666 });

async () => {
  const { stdout } = await execa('noop', ['foo'], { stripEof: false });
};
github flow-typed / flow-typed / definitions / npm / execa_v0.10.x / test_execa.js View on Github external
execa.stdout('ls').then(stdout => stdout.toLowerCase());
execa.stdout('ls', ['-l']).then(stdout => stdout.toLowerCase());
execa.stdout('ls', { uid: 1000, gid: 100 }).then(stdout => stdout.toLowerCase());
execa.stdout('ls', ['-l'], { timeout: 5 }).then(stdout => stdout.toLowerCase());
// $ExpectError
execa.stdout(['ls', '-l']);
// $ExpectError
execa.stdout('ls', { foo: 666 });

(execa.stderr('ls'): Promise);
execa.stderr('ls').then(stdout => stdout.toLowerCase());
execa.stderr('ls', ['-l']).then(stdout => stdout.toLowerCase());
execa.stderr('ls', { uid: 1000, gid: 100 }).then(stdout => stdout.toLowerCase());
execa.stderr('ls', ['-l'], { timeout: 5 }).then(stdout => stdout.toLowerCase());
// $ExpectError
execa.stderr(['ls', '-l']);
// $ExpectError
execa.stderr('ls', { foo: 666 });

(execa.shell('ls | wc -l'): ThenableChildProcess);
execa.shell('ls | wc -l').then(printStdout, printErrno);
execa.shell('ls | wc -l', { cwd: '/' }).then(printStdout);
execa.shell('foo').catch(printErrno);
// $ExpectError
execa.shell(['ls', 'wc -l']);
// $ExpectError
execa.stderr('ls', 'wc -l', { foo: 666 });

(execa.sync('ls'): SyncResult);
(execa.sync('ls', ['-l']).stdout: string);
(execa.sync('ls', { stderr: 'pipe' }).signal: ?string);
(execa.sync('ls', ['-l'], { localDir: '~/' }).failed: boolean);
github flow-typed / flow-typed / definitions / npm / execa_v0.10.x / test_execa.js View on Github external
execa.stderr('ls', ['-l']).then(stdout => stdout.toLowerCase());
execa.stderr('ls', { uid: 1000, gid: 100 }).then(stdout => stdout.toLowerCase());
execa.stderr('ls', ['-l'], { timeout: 5 }).then(stdout => stdout.toLowerCase());
// $ExpectError
execa.stderr(['ls', '-l']);
// $ExpectError
execa.stderr('ls', { foo: 666 });

(execa.shell('ls | wc -l'): ThenableChildProcess);
execa.shell('ls | wc -l').then(printStdout, printErrno);
execa.shell('ls | wc -l', { cwd: '/' }).then(printStdout);
execa.shell('foo').catch(printErrno);
// $ExpectError
execa.shell(['ls', 'wc -l']);
// $ExpectError
execa.stderr('ls', 'wc -l', { foo: 666 });

(execa.sync('ls'): SyncResult);
(execa.sync('ls', ['-l']).stdout: string);
(execa.sync('ls', { stderr: 'pipe' }).signal: ?string);
(execa.sync('ls', ['-l'], { localDir: '~/' }).failed: boolean);
// $ExpectError
execa.sync(['ls']);
// $ExpectError
execa.stderr('ls', { foo: 666 });
// $ExpectError
execa.sync('ls').killed;
// $ExpectError
execa.sync('ls', { input: process.stdin });

(execa.shellSync('ls | wc -l'): SyncResult);
(execa.shellSync('ls | wc -l', { stderr: 'ignore' }).stdout: string);
github nklayman / vue-cli-plugin-electron-builder / __tests__ / commands.spec.js View on Github external
await runCommand('electron:serve', {}, {}, [...args, '--keep2'])
      // Custom args should have been removed, and other args kept
      calledArgs = execa.mock.calls[0][1]
      // Remove dist_electron
      calledArgs.shift()
      expect(calledArgs).toEqual(['--keep2'])
      execa.mockClear()

      await runCommand('electron:serve', {}, {}, ['--keep1', ...args])
      // Custom args should have been removed, and other args kept
      calledArgs = execa.mock.calls[0][1]
      // Remove dist_electron
      calledArgs.shift()
      expect(calledArgs).toEqual(['--keep1'])
      execa.mockClear()

      await runCommand('electron:serve', {}, {}, args)
      // Custom args should have been removed
      calledArgs = execa.mock.calls[0][1]
      // Remove dist_electron
      calledArgs.shift()
      expect(calledArgs).toEqual([])
      execa.mockClear()

      await runCommand('electron:serve', {}, {}, ['--keep1', '--keep2'])
      // Nothing should be removed
      calledArgs = execa.mock.calls[0][1]
      // Remove dist_electron
      calledArgs.shift()
      expect(calledArgs).toEqual(['--keep1', '--keep2'])
      execa.mockClear()
github nklayman / vue-cli-plugin-electron-builder / __tests__ / commands.spec.js View on Github external
// Set callback to be called later
          watchCb = cb
        }
      }
    })
    await runCommand('electron:serve', {
      pluginOptions: {
        electronBuilder: {
          mainProcessFile: 'customBackground',
          mainProcessArgs: ['--a-flag', 'a-value']
        }
      }
    })

    expect(execa).toHaveBeenCalledTimes(1)
    expect(execa.mock.calls[0][1]).toEqual([
      'dist_electron',
      '--a-flag',
      'a-value'
    ])

    // Mock change of background file
    watchCb()
    expect(mockExeca.removeListener.mock.calls[0][0]).toBe('exit')

    expect(execa).toHaveBeenCalledTimes(2)
    expect(execa.mock.calls[0][1]).toEqual([
      'dist_electron',
      '--a-flag',
      'a-value'
    ])
  })
github react-native-community / cli / packages / platform-android / src / commands / runAndroid / index.ts View on Github external
});

  if (process.platform === 'darwin') {
    try {
      return execa.sync(
        'open',
        ['-a', terminal, launchPackagerScript],
        procConfig,
      );
    } catch (error) {
      return execa.sync('open', [launchPackagerScript], procConfig);
    }
  }
  if (process.platform === 'linux') {
    try {
      return execa.sync(terminal, ['-e', `sh ${launchPackagerScript}`], {
        ...procConfig,
        detached: true,
      });
    } catch (error) {
      // By default, the child shell process will be attached to the parent
      return execa.sync('sh', [launchPackagerScript], procConfig);
    }
  }
  if (/^win/.test(process.platform)) {
    //Temporary fix for #484. See comment on line 254
    fs.writeFileSync(launchPackagerScript, launchPackagerScriptContent, {
      encoding: 'utf8',
      flag: 'w',
    });

    // Awaiting this causes the CLI to hang indefinitely, so this must execute without await.