bin-tester
v7.0.1
Published
Test Node executable commands specified via bin.
Readme
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.jsonhas a validbinproperty with a string or object with CLI commands, which must be JavaScript files - The node.js executable is available in the
PATH(asnode)
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
binis an object,commandmust be specified and must be a key in thebinobject. - If
binis a string,commandmust either be specified and match the package name, or not be specified.
- If
environment: Environment variable key-value pairs (in addition toprocess.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 applicablestderr: output written tostdoutduring executionstdout: output written tostderrduring 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.
