Skip to content

Commit

Permalink
add option to show diffs in assert_output and assert_equal
Browse files Browse the repository at this point in the history
  • Loading branch information
justinledford committed Jan 9, 2024
1 parent e2d855b commit 77311c2
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 10 deletions.
28 changes: 23 additions & 5 deletions src/assert_equal.bash
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
# Options:
# <actual> The value being compared.
# <expected> The value to compare against.
# -d, --diff Show diff between `expected` and `$output`
#
# ```bash
# @test 'assert_equal()' {
Expand All @@ -31,12 +32,29 @@
# actual : have
# --
# ```
#
# If the `--diff` option is set, a diff between the expected and actual output is shown.
assert_equal() {
local -i show_diff=0

while (( $# > 0 )); do
case "$1" in
-d|--diff) show_diff=1; shift ;;
*) break ;;
esac
done

if [[ $1 != "$2" ]]; then
batslib_print_kv_single_or_multi 8 \
'expected' "$2" \
'actual' "$1" \
| batslib_decorate 'values do not equal' \
| fail
if (( show_diff )); then
diff <(echo "$2") <(echo "$1") \
| batslib_decorate 'values do not equal' \
| fail
else
batslib_print_kv_single_or_multi 8 \
'expected' "$2" \
'actual' "$1" \
| batslib_decorate 'values do not equal' \
| fail
fi
fi
}
21 changes: 16 additions & 5 deletions src/assert_output.bash
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
# Options:
# -p, --partial Match if `expected` is a substring of `$output`
# -e, --regexp Treat `expected` as an extended regular expression
# -d, --diff Show diff between `expected` and `$output`
# -, --stdin Read `expected` value from STDIN
# <expected> The expected value, substring or regular expression
#
Expand Down Expand Up @@ -57,6 +58,8 @@
# --
# ```
#
# If the `--diff` option is set, a diff between the expected and actual output is shown.
#
# ## Existence
#
# To assert that any output exists at all, omit the `expected` argument.
Expand Down Expand Up @@ -126,6 +129,7 @@ assert_output() {
local -i is_mode_regexp=0
local -i is_mode_nonempty=0
local -i use_stdin=0
local -i show_diff=0
: "${output?}"

# Handle options.
Expand All @@ -137,6 +141,7 @@ assert_output() {
case "$1" in
-p|--partial) is_mode_partial=1; shift ;;
-e|--regexp) is_mode_regexp=1; shift ;;
-d|--diff) show_diff=1; shift ;;
-|--stdin) use_stdin=1; shift ;;
--) shift; break ;;
*) break ;;
Expand Down Expand Up @@ -187,11 +192,17 @@ assert_output() {
fi
else
if [[ $output != "$expected" ]]; then
batslib_print_kv_single_or_multi 8 \
'expected' "$expected" \
'actual' "$output" \
| batslib_decorate 'output differs' \
| fail
if (( show_diff )); then
diff <(echo "$expected") <(echo "$output") \
| batslib_decorate 'output differs' \
| fail
else
batslib_print_kv_single_or_multi 8 \
'expected' "$expected" \
'actual' "$output" \
| batslib_decorate 'output differs' \
| fail
fi
fi
fi
}

0 comments on commit 77311c2

Please sign in to comment.