stdin must be specified explicitly with `-`
diff --git a/src/assert.bash b/src/assert.bash index 1194753..3c11fb7 100644 --- a/src/assert.bash +++ b/src/assert.bash
@@ -185,12 +185,14 @@ assert_output() { local -i is_mode_partial=0 local -i is_mode_regexp=0 + local -i use_stdin=0 # Handle options. while (( $# > 0 )); do case "$1" in -p|--partial) is_mode_partial=1; shift ;; -e|--regexp) is_mode_regexp=1; shift ;; + -) use_stdin=1; shift ;; --) shift; break ;; *) break ;; esac @@ -205,7 +207,11 @@ # Arguments. local expected - (( $# == 0 )) && expected="$(cat -)" || expected="$1" + if (( use_stdin )); then + expected="$(cat -)" + else + expected="$1" + fi # Matching. if (( is_mode_regexp )); then @@ -278,12 +284,14 @@ refute_output() { local -i is_mode_partial=0 local -i is_mode_regexp=0 + local -i use_stdin=0 # Handle options. while (( $# > 0 )); do case "$1" in -p|--partial) is_mode_partial=1; shift ;; -e|--regexp) is_mode_regexp=1; shift ;; + -) use_stdin=1; shift ;; --) shift; break ;; *) break ;; esac @@ -298,7 +306,11 @@ # Arguments. local unexpected - (( $# == 0 )) && unexpected="$(cat -)" || unexpected="$1" + if (( use_stdin )); then + unexpected="$(cat -)" + else + unexpected="$1" + fi if (( is_mode_regexp == 1 )) && [[ '' =~ $unexpected ]] || (( $? == 2 )); then echo "Invalid extended regular expression: \`$unexpected'" \
diff --git a/test/50-assert-15-assert_output.bats b/test/50-assert-15-assert_output.bats index cca79cc..7efee71 100755 --- a/test/50-assert-15-assert_output.bats +++ b/test/50-assert-15-assert_output.bats
@@ -26,9 +26,9 @@ [ "${lines[3]}" == '--' ] } -@test 'assert_output(): reads <expected> from STDIN' { +@test 'assert_output() - : reads <expected> from STDIN' { run echo 'a' - run assert_output <<STDIN + run assert_output - <<STDIN a STDIN echo "$output"
diff --git a/test/50-assert-16-refute_output.bats b/test/50-assert-16-refute_output.bats index 5204301..a289717 100755 --- a/test/50-assert-16-refute_output.bats +++ b/test/50-assert-16-refute_output.bats
@@ -25,9 +25,9 @@ [ "${lines[2]}" == '--' ] } -@test 'refute_output(): reads <unexpected> from STDIN' { - run echo 'a' - run refute_output <<INPUT +@test 'refute_output() - : reads <unexpected> from STDIN' { + run echo '-' + run refute_output - <<INPUT b INPUT [ "$status" -eq 0 ]