Introduce assert_success

This commit is contained in:
Sven van Heugten 2026-03-03 20:22:34 +01:00
parent a1ffb1abd4
commit 1a10b24b06
No known key found for this signature in database
GPG key ID: D612F88666F4F660
2 changed files with 36 additions and 0 deletions

View file

@ -32,6 +32,23 @@ assert_fails() {
} }
export -f assert_fails export -f assert_fails
# helper functions inspired by bats/bats-assert
run() {
set +e
("$@")
status=$?
set -e
return 0
}
assert_success() {
if [ "$status" -ne 0 ]; then
echo "Expected command to succeed, but it failed."
exit 1
fi
}
export -f run assert_success
# main flow
orig_ref="$(git symbolic-ref --quiet --short HEAD || git rev-parse HEAD)" orig_ref="$(git symbolic-ref --quiet --short HEAD || git rev-parse HEAD)"
base="$(git merge-base main HEAD)" base="$(git merge-base main HEAD)"
mapfile -t commits < <(git rev-list --reverse "${base}..HEAD") mapfile -t commits < <(git rev-list --reverse "${base}..HEAD")

View file

@ -112,3 +112,22 @@ commit_with_assertion() {
assert_success assert_success
} }
@test "assert_success should succeed if the executed command succeeded" {
git checkout -b feature
commit_with_assertion $'run exit 0\nassert_success'
run git-check-assertions
assert_success
}
@test "assert_success should fail if the executed command failed" {
git checkout -b feature
commit_with_assertion $'run exit 1\nassert_success'
run git-check-assertions
assert_failure
assert_output --partial "Expected command to succeed, but it failed."
}