diff --git a/assert.sh b/assert.sh index f3d03d8..013c7d5 100644 --- a/assert.sh +++ b/assert.sh @@ -90,9 +90,8 @@ assert() { # assert [stdin] (( tests_ran++ )) [[ -n "$DISCOVERONLY" ]] && return - # printf required for formatting - printf -v expected "x${2:-}" # x required to overwrite older results - result="$(eval 2>/dev/null $1 <<< ${3:-})" + expected=$(echo -e "x${2:-}") # x required to overwrite older results + result=$(echo -e "$(eval 2>/dev/null "$1" <<< ${3:-})") # Note: $expected is already decorated if [[ "x$result" == "$expected" ]]; then [[ -n "$DEBUG" ]] && echo -n . diff --git a/tests.sh b/tests.sh index 27793f0..370ff90 100755 --- a/tests.sh +++ b/tests.sh @@ -12,6 +12,9 @@ assert "seq 2" "1\n2" # multi-line output expected assert_raises 'read a; exit $a' 42 "42" # variables still work assert "echo 1; echo 2 # ^" "1\n2" # semicolon required! +assert 'echo " * "' " * " # don't let the shell evaluate arguments +assert "echo '%s --'" "%s --" # don't escape user content +assert "echo \"foo\nbar\"" "foo\nbar" # interpretation of backslash escape assert_end demo _clean() {