Check initial state before running

```git-check-assertions
run test/git-check-assertions.bats
assert_success

git checkout HEAD~1 bin
run test/git-check-assertions.bats
assert_failure
assert_output --partial "not ok 2 should refuse to run when the index has changes"
assert_output --partial "not ok 3 should refuse to run when the working tree has changes"
assert_output --partial "not ok 4 should refuse to run when there are untracked files"
```
This commit is contained in:
Sven van Heugten 2026-03-06 05:02:57 +01:00
parent 3ce1ea5e4b
commit a31bc62046
No known key found for this signature in database
GPG key ID: D612F88666F4F660
2 changed files with 32 additions and 0 deletions

View file

@ -63,6 +63,10 @@ assert_output() {
export -f run assert_success assert_failure assert_output
# main flow
if [ ! -z "$(git status --porcelain)" ]; then
echo "Uncommitted changes. Refusing to run." >&2
exit 1
fi
orig_ref="$(git symbolic-ref --quiet --short HEAD || git rev-parse HEAD)"
if git show-ref --verify --quiet refs/heads/main; then
base_branch=main

View file

@ -46,6 +46,34 @@ commit_with_assertion() {
assert_file_not_exists ../test
}
@test "should refuse to run when the index has changes" {
echo "staged" >>readme
git add readme
run git-check-assertions
assert_failure
assert_output --partial "Uncommitted changes. Refusing to run."
}
@test "should refuse to run when the working tree has changes" {
echo "unstaged" >>readme
run git-check-assertions
assert_failure
assert_output --partial "Uncommitted changes. Refusing to run."
}
@test "should refuse to run when there are untracked files" {
echo "new" >untracked
run git-check-assertions
assert_failure
assert_output --partial "Uncommitted changes. Refusing to run."
}
@test "should not run any assertion blocks from main when on a feature branch" {
commit_with_assertion "touch ../test"
git checkout -b feature