Introduce assert_output

This commit is contained in:
Sven van Heugten 2026-03-03 20:26:07 +01:00
parent f9d6696687
commit b57d527d6e
No known key found for this signature in database
GPG key ID: D612F88666F4F660
2 changed files with 29 additions and 2 deletions

View file

@ -35,7 +35,7 @@ export -f assert_fails
# helper functions inspired by bats/bats-assert # helper functions inspired by bats/bats-assert
run() { run() {
set +e set +e
("$@") output="$("$@" 2>&1)"
status=$? status=$?
set -e set -e
return 0 return 0
@ -52,7 +52,14 @@ assert_failure() {
exit 1 exit 1
fi fi
} }
export -f run assert_success assert_failure assert_output() {
if [ "$output" != "$1" ]; then
echo "Expected output to equal: $1"
echo "Actual output: $output"
exit 1
fi
}
export -f run assert_success assert_failure assert_output
# main flow # 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)"

View file

@ -150,3 +150,23 @@ commit_with_assertion() {
assert_failure assert_failure
assert_output --partial "Expected command to fail, but it succeeded." assert_output --partial "Expected command to fail, but it succeeded."
} }
@test "assert_output should succeed if the output matches the given string" {
git checkout -b feature
commit_with_assertion $'run echo hello\nassert_output hello'
run git-check-assertions
assert_success
}
@test "assert_output should fail if the output does not match the given string" {
git checkout -b feature
commit_with_assertion $'run echo hello\nassert_output goodbye'
run git-check-assertions
assert_failure
assert_output --partial "Expected output to equal: goodbye"
assert_output --partial "Actual output: hello"
}