<commit_before>Chai Exec
=======================

#### Chai assertions for testing your CLI

[![Cross-Platform Compatibility](https://jstools.dev/img/badges/os-badges.svg)](https://github.com/JS-DevTools/chai-exec/blob/master/.github/workflows/CI-CD.yaml)
[![Build Status](https://github.com/JS-DevTools/chai-exec/workflows/CI-CD/badge.svg)](https://github.com/JS-DevTools/chai-exec/blob/master/.github/workflows/CI-CD.yaml)

[![Coverage Status](https://coveralls.io/repos/github/JS-DevTools/chai-exec/badge.svg?branch=master)](https://coveralls.io/github/JS-DevTools/chai-exec?branch=master)
[![Dependencies](https://david-dm.org/JS-DevTools/chai-exec.svg)](https://david-dm.org/JS-DevTools/chai-exec)

[![npm](https://img.shields.io/npm/v/@jsdevtools/chai-exec.svg?maxAge=43200)](https://www.npmjs.com/package/@jsdevtools/chai-exec)
[![License](https://img.shields.io/npm/l/@jsdevtools/chai-exec.svg?maxAge=2592000)](LICENSE)


Features
--------------------------
- **Easy to use**<br>
  Pass your CLI and arguments as a single string, an array of strings, or as separate parameters.

- **Don't repeat yourself**<br>
  Set your common [defaults](#chaiexecdefaults) _once_.  Each test ony needs to specify the arguments that are unique to it.

- **Fluent assertions**<br>
  Test your CLI using intuitive fluent syntax, such as `myCLI.should.exit.with.code(0)` or `myCLI.stdout.should.contain("some string")`.

- **Async Support**<br>
  Just use `await chaiExecAsync()` instead of `chaiExec()`.  Everything else is the same.

- **Windows Support**<br>
  Excellent Windows support, thanks to [cross-spawn](https://github.com/moxystudio/node-cross-spawn).

<commit_msg>Added Treeware badge and license<commit_after>Chai Exec
=======================

#### Chai assertions for testing your CLI

[![Cross-Platform Compatibility](https://jstools.dev/img/badges/os-badges.svg)](https://github.com/JS-DevTools/chai-exec/blob/master/.github/workflows/CI-CD.yaml)
[![Build Status](https://github.com/JS-DevTools/chai-exec/workflows/CI-CD/badge.svg)](https://github.com/JS-DevTools/chai-exec/blob/master/.github/workflows/CI-CD.yaml)

[![Coverage Status](https://coveralls.io/repos/github/JS-DevTools/chai-exec/badge.svg?branch=master)](https://coveralls.io/github/JS-DevTools/chai-exec?branch=master)
[![Dependencies](https://david-dm.org/JS-DevTools/chai-exec.svg)](https://david-dm.org/JS-DevTools/chai-exec)

[![npm](https://img.shields.io/npm/v/@jsdevtools/chai-exec.svg)](https://www.npmjs.com/package/@jsdevtools/chai-exec)
[![License](https://img.shields.io/npm/l/@jsdevtools/chai-exec.svg)](LICENSE)
[![Buy us a tree](https://img.shields.io/badge/Treeware-%F0%9F%8C%B3-lightgreen)](https://plant.treeware.earth/JS-DevTools/XXXXXXXXXXXXXXXXXXXXXXXXX)


Features
--------------------------
- **Easy to use**<br>
  Pass your CLI and arguments as a single string, an array of strings, or as separate parameters.

- **Don't repeat yourself**<br>
  Set your common [defaults](#chaiexecdefaults) _once_.  Each test ony needs to specify the arguments that are unique to it.

- **Fluent assertions**<br>
  Test your CLI using intuitive fluent syntax, such as `myCLI.should.exit.with.code(0)` or `myCLI.stdout.should.contain("some string")`.

- **Async Support**<br>
  Just use `await chaiExecAsync()` instead of `chaiExec()`.  Everything else is the same.

- **Windows Support**<br>
  Excellent Windows support, thanks to [cross-spawn](https://github.com/moxystudio/node-cross-spawn).


{'fraction_non_alphanumeric': 0.2014388489208633, 'fraction_numerical': 0.005179856115107914, 'mean_word_length': 4.6612377850162865, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 26, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1234009', 'n_tokens_mistral': 1277, 'n_tokens_neox': 1197, 'n_words': 200}