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