Chester is a daemon running in the background. It listens for the changes in the project you are working on and after every change it runs the tests. The results are exposed via REST API on local socket, so you can build your own software on top of that.
Example use of chester: Always On Stats - display code statistics using small desktop widget.
Note: Keep in mind the GIF above is a separate project which uses chester. Head over to AOS for details how to install the widget and to learn how the status is shown. Chester is designed as an API you can build upon.
The next step is not triggered unless the previous one is completed with success.
ββββββββββββββββββββββββ
β β
β Watch for changes β
β β
ββββββββββββ¬ββββββββββββ
β
β
βChange detected
β
ββββββββββββΌββββββββββββ
β β
β Run Check β
β β
ββββββββββββ¬ββββββββββββ
β
β
βCheck passed
β
ββββββββββββΌββββββββββββ
β β
β Run Tests β
β β
ββββββββββββ¬ββββββββββββ
β
β
βTests passed
β
ββββββββββββΌββββββββββββ
β β
β Update Tests Index β
β β
ββββββββββββ¬ββββββββββββ
β
β
βTests changed
β
ββββββββββββΌββββββββββββ
β β
β Run Code Coverage β
β β
ββββββββββββββββββββββββ
curl --unix-socket "/run/user/$(id -u)/chester.sock" http://chester/check/status
curl --unix-socket "/run/user/$(id -u)/chester.sock" http://chester/tests/status
curl --unix-socket "/run/user/$(id -u)/chester.sock" http://chester/coverage/status
curl --unix-socket "/run/user/$(id -u)/chester.sock" \
-XPUT -H "Content-Type: application/json" \
-d '{"repo_root": "<new repo path here>"}' \
http://chester/repo/root
- Check status
- Clippy status
- Tests status
- Code coverage
- Project quality
- Cyclomatic Complexity
- Halstead Metrics (Effort to maintain code, difficulty to understand code etc.)
- Maintainability Index
cargo install --git https://github.com/devzbysiu/chester
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
At your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.