Herostratus n. 1. An ancient Greek known for seeking fame through crime and destruction. 2. A Git repository achievements engine.
git clone [email protected]:Notgnoshi/herostratus.git
cd herostratus
cargo run -- check .
cargo run -- check . origin/test/fixup
The check
subcommand is stateless. It reads/writes no configuration, and can not fetch from the
upstream remote. Read on for stateful configuration that enables running and re-running Herostratus
on a group of repositories:
The following example configures Herostratus to run on its own test/simple and test/fixup branches.
$ herostratus add [email protected]:Notgnoshi/herostratus.git test/simple
$ herostratus add [email protected]:Notgnoshi/herostratus.git test/fixup
[!TIP] You may find the
--data-dir
,--get-data-dir
,--config-file
, and--get-config
options useful when setting up Herostratus to run on one more more repository over time.
After this, you can use the fetch-all
and check-all
subcommands to update and check the cloned
repositories.
$ # Fetch from the remote tracking branch for test/simple and test/fixup
$ herostratus fetch-all
$ # Check the test/simple and test/fixup branches for achievements
$ herostratus check-all
Achievement { name: "I meant to fix that up later, I swear!", commit: 2721748d8fa0b0cc3302b41733d37e30161eabfd }
Achievement { name: "I meant to fix that up later, I swear!", commit: a987013884fc7dafbe9eb080d7cbc8625408a85f }
Achievement { name: "I meant to fix that up later, I swear!", commit: 60b480b554dbd5266eec0f2378f72df5170a6702 }
[!WARNING] This output format will change as Herostratus becomes more usable
The usual cargo build
and cargo test
. There are a few integration tests that take too long to
run every time. These can be run with cargo test -- --ignored
.
I recommend using cargo-nextest for running the tests. It's not strictly
necessary, but does give a better experience than cargo test
.
cargo nextest run
Using cargo-mutants for mutation testing is phenomenally easy, and even
though Herostratus has pretty good test coverage, cargo-mutants
did highlight a few bugs, and
several gaps in tests.
cargo mutants --in-place --package herostratus
While not every issue it points out is worth fixing, it is sometimes a useful tool.
There are orphan test branches in this repository used for integration tests.
For example, the test/simple
branch was created like this:
git checkout --orphan test/simple
git rm -rf .
for i in `seq 0 4`; do
git commit --allow-empty -m "test/simple: $i"
done
Contribution is welcome! See CONTRIBUTING.md.