| Crates.io | choreo |
| lib.rs | choreo |
| version | 0.8.3 |
| created_at | 2025-09-09 13:53:06.385868+00 |
| updated_at | 2025-10-17 12:21:53.432417+00 |
| description | DSL for BDD type testing. |
| homepage | https://cladam.github.io/choreo/ |
| repository | https://github.com/cladam/choreo |
| max_upload_size | |
| id | 1830891 |
| size | 1,667,435 |
choreo is an executable Domain-Specific Language (DSL) for writing automated, behaviour-driven tests for command-line
applications and system interactions. It uses a structured, human-readable format inspired by Gherkin to define test
scenarios that are easy to write, read, and maintain.
The goal of choreo is to provide the power and expressiveness of a BDD framework like Cucumber, but in a self-contained, executable format specifically designed for testing the shell.
given-when-then structure within test blocks to create clear,
self-documenting
tests..chor files are complete, runnable tests. No separate "step definition" or "glue code" files
are required.stdout, stderr, and command exit codes.
See web_health_check.chor for the above example in text format. There are many more examples in the examples directory.
For a complete guide to all keywords, actions, conditions, and features, please see the official Choreo DSL Reference.
You need Rust and Cargo installed.
The easiest way to install choreo is to download it from crates.io. You can do it
using the following command:
cargo install choreo
If you want to update choreo to the latest version, execute the following command:
choreo update
Alternatively you can build medi from source using Cargo:
git clone https://github.com/cladam/choreo.git
cd choreo
cargo build --release
# The binary will be located at target/release/choreo
# Optionally, you can add it to your PATH
export PATH=$PATH:$(pwd)/target/release
# Or, install it system-wide
cargo install --path .
Use the init command to generate a new example .chor file. This is a great starting point for a new test suite.
# Create a new test file with default name "test.chor"
choreo init
# Create a new test file
choreo init --file "my_test.chor"
Use the validate command to check the syntax and structure of a .chor file without executing it.
# Validate the default test.chor file
choreo validate
# Validate a specific file
choreo validate --file "examples/advanced_matchers.chor"
Use the lint command to both check syntax and semantics of a .chor file without executing it.
# Validate and run linting on the default test.chor file
choreo lint
# Lint a specific file
choreo lint --file "examples/advanced_matchers.chor"
Use the run command to execute a .chor file. Use the --verbose flag for detailed debug output.
# Run a test script
choreo run --file "examples/redirecting_output_tee.chor"
# Run with verbose logging
choreo run --file "examples/redirecting_output_tee.chor" --verbose
choreo is currently in the beta stage. The core engine is functional, but more to add before production-ready.
The journey ahead includes:
Contributions are welcome! Please feel free to open an issue or submit a pull request.