From c3425e0933294a690cc2334e43e8c91a74c9a32d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20=C5=9Aled=C5=BA?= Date: Sat, 10 Mar 2018 23:23:23 +0100 Subject: [PATCH] Fixing bug in try --- src/fun.sh | 4 ++-- test/try_test.sh | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/fun.sh b/src/fun.sh index 045826c..9608852 100755 --- a/src/fun.sh +++ b/src/fun.sh @@ -173,12 +173,12 @@ catch() { local val=$(2>&1 eval "$cmd"; echo $?) local cnt=$(list $val | wc -l) local status=$(list $val | last) - list "$cmd" $status $(list $val | take $((cnt - 1)) | unlist | tup) | $f + $f < <(list "$cmd" $status $(list $val | take $((cnt - 1)) | unlist | tup)) } try() { local f="$@" - catch lambda cmd status val . '[[ $status -eq 0 ]] && tupl $val || list $status | '$f + catch lambda cmd status val . '[[ $status -eq 0 ]] && tupx 1- $val | unlist || { '"$f"' < <(list $status); }' } ret() { diff --git a/test/try_test.sh b/test/try_test.sh index 992ae49..be1aeb3 100755 --- a/test/try_test.sh +++ b/test/try_test.sh @@ -4,6 +4,8 @@ testTry() { assertEquals 1 "$(echo 'expr 2 / 2' | try lambda _ . 'ret 0')" assertEquals 0 "$(echo 'expr 2 / 0' | try lambda _ . 'ret 0')" assertEquals 2 "$(echo 'expr 2 / 0' | try lambda status . 'ret $status')" + assertEquals 'already up to date' "$(echo 'echo already up to date' | try lambda _ . 'ret error')" + assertEquals 'error exit 1' "$(try λ _ . 'echo "error"; echo exit 1' < <(echo fgit pull) | unlist)" } . ./shunit2-init.sh \ No newline at end of file