From 4aeb48a02e7fd20e89c207310bbd3d2e74b76479 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Tue, 16 May 2017 22:58:25 +0200 Subject: [PATCH] Fix use of local in while loop. (#66) For some reason it did not fail on Travis when only pushing the test first?! Also adds punctuation to already-stashed msg. --- lib/varstash | 10 ++++++---- tests/varstash.t | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/varstash b/lib/varstash index 94c063d..056233c 100644 --- a/lib/varstash +++ b/lib/varstash @@ -44,7 +44,7 @@ # # $ stash FOO # $ stash FOO -# You have already stashed FOO, please specify "-f" if you want to overwrite another stashed value +# You have already stashed FOO, please specify "-f" if you want to overwrite another stashed value. # $ stash -f FOO # $ # @@ -94,7 +94,7 @@ function stash() { if [[ $stash_which == $stash_expression ]]; then if [[ -z $run_from_smartcd ]]; then - echo "You have already stashed $stash_which, please specify \"-f\" if you want to overwrite another stashed value" + echo "You have already stashed $stash_which, please specify \"-f\" if you want to overwrite another stashed value." fi # Skip remaining work if we're not doing an assignment @@ -197,16 +197,18 @@ function get_autostash_array_name() { function autostash() { local run_from_autostash=1 + local ret varname + local already_stashed= while [[ -n $1 ]]; do if [[ $1 == "alias" && $2 == *=* ]]; then shift local _stashing_alias_assign=1 fi - local already_stashed= + already_stashed= stash "$1" if [[ -z $already_stashed ]]; then - local ret varname=${1%%'='*} + varname=${1%%'='*} get_autostash_array_name eval "$ret=(\$$ret \$varname)" fi diff --git a/tests/varstash.t b/tests/varstash.t index 187904f..3e4b3dc 100644 --- a/tests/varstash.t +++ b/tests/varstash.t @@ -106,3 +106,23 @@ And once again where a value gets restored. orig_2 }}} + +autostash does not issue a warning, and no other output. {{{ + + $ autostash something=1 something_else=2 + $ echo $something $something_else + 1 2 + $ stash something=1.2 something_else=2.2 + $ echo $something $something_else + 1.2 2.2 + $ stash something something_else + You have already stashed something, please specify "-f" if you want to overwrite another stashed value. + You have already stashed something_else, please specify "-f" if you want to overwrite another stashed value. + +Should not be set anymore. + + $ autounstash + $ echo ${+something} ${+something_else} + 0 0 + +}}}