From bdc6967fc9d6bfbca49223e5ef0c3dd9ee4fbbee Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Wed, 18 Oct 2017 00:31:43 +0200 Subject: [PATCH] Set varstash_dir for "leave" event (#72) Fixes https://github.com/Tarrasch/zsh-autoenv/issues/45. --- autoenv.zsh | 2 +- tests/varstash-unstash-on-leave.t | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/varstash-unstash-on-leave.t 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 -- 2.44.0