bin-tester
TypeScript icon, indicating that this package has built-in type declarations

6.0.0 • Public • Published

Bin Tester

Executes the package bin command in the specific folder with the specified arguments and environment variables and returns the results.

Requirements

The following configuration is required:

  • The package.json has a valid bin property with a string or object with CLI commands, which must be JavaScript files
  • The node.js executable is available in the PATH (as node)

Usage

The following is an example jest test showing usage.

const { bin } = require('bin-tester');

it('should successfully execute and output JSON results to stdout if JSON format specified', () => {
    // Specify output format to be JSON
    const options = { binArguments: ['-f', 'json'] };
    // Execute test with the specified arguments in the current folder
    const results = await bin(options);

    expect(results.code).toBe(0);
    expect(results.stderr).toBe('');
    expect(results.stdout).toMatchSnapshot();
});

The bin command accepts an options argument, which must be an object with any combination of the following properties (all optional):

  • binArguments: A string array of command line arguments and values to use when executing the package bin command (defaults to no arguments)
  • command: The name of the bin command to be executed. Throws if specified and not a valid bin command.
    • If bin is an object, command must be specified and must be a key in the bin object.
    • If bin is a string, command must either be specified and match the package name, or not be specified.
  • environment: Environment variable key-value pairs (in addition to process.env)
  • packageDirectory: The directory with the package bin to be executed (defaults to ./)
  • timeout: A duration in ms after which the bin command times out and the promise is resolved (defaults to 0)
  • workingDirectory: The working directory to execute the package bin command (defaults to ./)

The command returns a Promise that resolves with an object with the following properties:

  • code: exit code (0 if successful)
  • error: error thrown during execution, if applicable
  • stderr: output written to stdout during execution
  • stdout: output written to stderr during execution

This Promise always resolves if the command was executed, even if an error was thrown during execution. This Promise rejects if an error prevents the command from being executed.

Readme

Keywords

Package Sidebar

Install

npm i bin-tester

Weekly Downloads

424

Version

6.0.0

License

MIT

Unpacked Size

13.2 kB

Total Files

6

Last publish

Collaborators

  • aarongoldenthal