if _autoenv_check_authorized_env_file $env_file_leave; then
_autoenv_source $env_file_leave leave $prev_dir
fi
+
+ # Unstash any autostash'd stuff.
+ varstash_dir=$prev_dir autounstash
+
_autoenv_stack_entered_remove $prev_file
fi
done
$ mkdir sub
$ cd sub
- $ echo 'echo ENTER; autostash FOO=baz' > $AUTOENV_FILE_ENTER
+ $ echo 'echo ENTER; autostash FOO=changed' > $AUTOENV_FILE_ENTER
$ echo 'echo LEAVE; autounstash' > $AUTOENV_FILE_LEAVE
Manually create auth file
Set environment variable.
- $ FOO=bar
+ $ FOO=orig
Activating the env stashes it and applies a new value.
$ cd .
ENTER
$ echo $FOO
- baz
+ changed
Leaving the directory unstashes it.
$ cd ..
LEAVE
$ echo $FOO
- bar
+ orig
+
+
+Test autounstashing when leaving a directory. {{{
+
+Setup:
+
+ $ cd sub
+ ENTER
+ $ echo 'echo ENTER; autostash VAR=changed' > $AUTOENV_FILE_ENTER
+ $ echo 'echo LEAVE; echo "no explicit call to autounstash"' > $AUTOENV_FILE_LEAVE
+ $ test_autoenv_auth_env_files
+
+$VAR is empty:
+
+ $ echo VAR:$VAR
+ VAR:
+
+Set it:
+
+ $ VAR=orig
+ $ cd ..
+ LEAVE
+ no explicit call to autounstash
+
+Leaving the directory keeps it intact - nothing had been stashed yet.
+
+ $ echo $VAR
+ orig
+
+Enter the dir, trigger the autostashing.
+
+ $ cd sub
+ ENTER
+ $ echo $VAR
+ changed
+
+Now leave again.
+
+ $ cd ..
+ LEAVE
+ no explicit call to autounstash
+ $ echo $VAR
+ orig
+
+
+Remove the leave file, auto-unstashing should still happen.
+
+ $ rm sub/$AUTOENV_FILE_LEAVE
+ $ cd sub
+ ENTER
+ $ echo $VAR
+ changed
+ $ cd ..
+ $ echo $VAR
+ orig
+
+}}}