From 5bbdb8216cdd68edb902434696755f0a10db6dff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Combes?= Date: Tue, 12 Sep 2017 14:25:34 +0200 Subject: [PATCH] feat(run): Make possible to run to register stdout and stderr in separate variables --- libexec/bats-exec-test | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libexec/bats-exec-test b/libexec/bats-exec-test index 8f3bd51..123f7ba 100755 --- a/libexec/bats-exec-test +++ b/libexec/bats-exec-test @@ -48,17 +48,25 @@ load() { } run() { - local e E T oldIFS + local e E T oldIFS [[ ! "$-" =~ e ]] || e=1 [[ ! "$-" =~ E ]] || E=1 [[ ! "$-" =~ T ]] || T=1 set +e set +E set +T - output="$("$@" 2>&1)" - status="$?" + + eval "$({ t_sdterr=$({ t_stdout=$("$@"); t_ret=$?; } 2>&1; declare -p t_stdout >&2; declare -pi t_ret >&2); declare -p t_sdterr; } 2>&1)" + + status=$t_ret + output="${t_stdout}${t_sdterr}" + stdout=$t_stdout + stderr=$t_sdterr + oldIFS=$IFS IFS=$'\n' lines=($output) + IFS=$'\n' stdlines=($t_stdout) + IFS=$'\n' errlines=($t_sdterr) [ -z "$e" ] || set -e [ -z "$E" ] || set -E [ -z "$T" ] || set -T