From: Daniel Hahler Date: Tue, 17 Oct 2017 22:31:43 +0000 (+0200) Subject: Set varstash_dir for "leave" event (#72) X-Git-Url: http://www.git.stargrave.org/?p=zsh-autoenv.git;a=commitdiff_plain;h=bdc6967fc9d6bfbca49223e5ef0c3dd9ee4fbbee Set varstash_dir for "leave" event (#72) Fixes https://github.com/Tarrasch/zsh-autoenv/issues/45. --- diff --git a/autoenv.zsh b/autoenv.zsh index b64b6c7..166213a 100644 --- a/autoenv.zsh +++ b/autoenv.zsh @@ -406,7 +406,7 @@ _autoenv_chpwd_handler() { if ! [[ ${PWD}/ == ${prev_dir}/* ]]; then local env_file_leave=$prev_dir/$AUTOENV_FILE_LEAVE if _autoenv_check_authorized_env_file $env_file_leave; then - _autoenv_source $env_file_leave leave $prev_dir + varstash_dir=$prev_dir _autoenv_source $env_file_leave leave $prev_dir fi # Unstash any autostashed stuff. diff --git a/tests/varstash-unstash-on-leave.t b/tests/varstash-unstash-on-leave.t new file mode 100644 index 0000000..bfea2bf --- /dev/null +++ b/tests/varstash-unstash-on-leave.t @@ -0,0 +1,25 @@ +Test unstash behavior on leaving. + + $ source $TESTDIR/setup.zsh || return 1 + +Setup test environment. + + $ mkdir sub + $ echo 'echo ENTER; stash FOO=changed' >| sub/$AUTOENV_FILE_ENTER + $ echo 'echo LEAVE; unstash FOO' >| sub/$AUTOENV_FILE_LEAVE + $ test_autoenv_auth_env_files sub + $ FOO=orig + +Activating the env stashes it and applies a new value. + + $ cd sub + ENTER + $ echo $FOO + changed + +Leaving the directory unstashes it (varstash_dir is set to prev dir). + + $ cd .. + LEAVE + $ echo $FOO + orig