Executes the package bin
command in the specific folder with the specified
arguments and environment variables and returns the results.
The following configuration is required:
- The
package.json
has a validbin
property with a string or object with CLI commands, which must be JavaScript files - The node.js executable is available in the
PATH
(asnode
)
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 thebin
object. - If
bin
is a string,command
must 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 applicable -
stderr
: output written tostdout
during execution -
stdout
: output written tostderr
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.