The Samples tests are run using [behave][behave_url], a Cucumber-style BDD framework written in Python.
This project's `behave` implementation requires Python 3. See [Installing Python 3](#installing-python-3) for platform-specific instructions.
Two helper scripts, [behave.ps1](behave.ps1) and [behave.sh](behave.sh), are provided to simplify the setup and invocation of `behave`.
These wrappers:
1. install `pipenv` into the user's Python package install directory
1. create a Python virtual environment for the project using `pipenv`
1. install needed Python packages into the virtual environment
1. invoke `behave` in the virtual environment
Steps 1-3 are only run if necessary (typically the first run). To force the wrapper scripts to re-run steps 1-3, create an empty file named `reinit` in the project root and rerun the wrapper.
Any arguments and parameters passed to a wrapper are subsequently passed to `behave`.
As an example, the following displays the help for `behave`:
```dos
C:> .\behave.ps1 -h
```
Running with no arguments will run every sample for every framework/runtime combination.
```dos
C:> .\behave.ps1
```
To run a specific sample, pass the path to the sample: