From 589f37b6e67fa73023912ef60c0099dadfb04274 Mon Sep 17 00:00:00 2001 From: Ross Duggan Date: Tue, 8 Jul 2014 18:47:44 +0100 Subject: [PATCH 1/3] Separate stdout and stderr available in tests. - Introduces new variables: $output_stdout, $output_stderr, $lines_stdout, $lines_stderr Existing `$output` and `$lines` variables remain. --- libexec/bats-exec-test | 13 +++++++++++-- test/bats.bats | 23 +++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/libexec/bats-exec-test b/libexec/bats-exec-test index 8242d177..798ff538 100755 --- a/libexec/bats-exec-test +++ b/libexec/bats-exec-test @@ -55,9 +55,18 @@ run() { set +e set +E set +T - output="$("$@" 2>&1)" + + temp_stdout=$(mktemp -t stdout.XXXXXX) + temp_stderr=$(mktemp -t stderr.XXXXXX) + + $("$@" 2> $temp_stderr 1> $temp_stdout) status="$?" - IFS=$'\n' lines=($output) + + output_stdout=$(cat < $temp_stdout) + output_stderr=$(cat < $temp_stderr) + output="${output_stderr}${output_stdout}" + + IFS=$'\n' lines=($output) lines_stdout=($output_stdout) lines_stderr=($output_stderr) [ -z "$e" ] || set -e [ -z "$E" ] || set -E [ -z "$T" ] || set -T diff --git a/test/bats.bats b/test/bats.bats index d2efad85..4da08c38 100755 --- a/test/bats.bats +++ b/test/bats.bats @@ -206,3 +206,26 @@ fixtures bats [ "${lines[4]}" = "not ok 4 failing" ] [ "${lines[5]}" = "# (in test file $FIXTURE_ROOT/single_line.bats, line 9)" ] } + +@test "test output_stderr and lines_stderr are populated" { + run bats nonexistent + [ $status -eq 1 ] + [ $(expr "$output_stderr" : ".*does not exist") -ne 0 ] + [ "${lines_stdout[0]}" = "" ] + + run bats + [ $status -eq 1 ] + [ $(expr "${lines_stderr[1]}" : "Usage:") -ne 0 ] +} + +@test "test output_stdout and lines_stdout are populated" { + run bats -c "$FIXTURE_ROOT/output.bats" + [ $status -eq 0 ] + [ "$output_stdout" = "4" ] + + run bats -v + [ $status -eq 0 ] + [ $(expr "${lines_stdout[0]}" : "Bats [0-9][0-9.]*") -ne 0 ] + [ "${lines_stderr[0]}" = "" ] + +} From 354667bf0b6d106e398c003ee05a90b9c852dd7e Mon Sep 17 00:00:00 2001 From: Ross Duggan Date: Thu, 10 Jul 2014 15:07:56 +0100 Subject: [PATCH 2/3] Incorporate @ahippo's suggestions --- libexec/bats-exec-test | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libexec/bats-exec-test b/libexec/bats-exec-test index 798ff538..3913b8b5 100755 --- a/libexec/bats-exec-test +++ b/libexec/bats-exec-test @@ -56,14 +56,14 @@ run() { set +E set +T - temp_stdout=$(mktemp -t stdout.XXXXXX) - temp_stderr=$(mktemp -t stderr.XXXXXX) + local temp_stdout=$(mktemp -t stdout.XXXXXX) + local temp_stderr=$(mktemp -t stderr.XXXXXX) $("$@" 2> $temp_stderr 1> $temp_stdout) status="$?" - output_stdout=$(cat < $temp_stdout) - output_stderr=$(cat < $temp_stderr) + output_stdout=$( < $temp_stdout) + output_stderr=$( < $temp_stderr) output="${output_stderr}${output_stdout}" IFS=$'\n' lines=($output) lines_stdout=($output_stdout) lines_stderr=($output_stderr) From e1797d5fa2e2243167da0c81128ec03a589d6d9b Mon Sep 17 00:00:00 2001 From: Ross Duggan Date: Thu, 10 Jul 2014 16:04:34 +0100 Subject: [PATCH 3/3] Incorporate the rest of @ahippo's suggestions --- libexec/bats-exec-test | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libexec/bats-exec-test b/libexec/bats-exec-test index 3913b8b5..ea190a85 100755 --- a/libexec/bats-exec-test +++ b/libexec/bats-exec-test @@ -59,11 +59,11 @@ run() { local temp_stdout=$(mktemp -t stdout.XXXXXX) local temp_stderr=$(mktemp -t stderr.XXXXXX) - $("$@" 2> $temp_stderr 1> $temp_stdout) + ( "$@" 2> "$temp_stderr" 1> "$temp_stdout" ) status="$?" - output_stdout=$( < $temp_stdout) - output_stderr=$( < $temp_stderr) + output_stdout=$( < "$temp_stdout") + output_stderr=$( < "$temp_stderr") output="${output_stderr}${output_stdout}" IFS=$'\n' lines=($output) lines_stdout=($output_stdout) lines_stderr=($output_stderr)