zsh-autoenv/tests/varstash.t

129 lines
2.3 KiB
Perl

Test varstash integration.
$ source $TESTDIR/setup.zsh || return 1
Setup test environment.
$ mkdir sub
$ cd sub
The varstash library should not get loaded always.
$ echo 'echo ENTER' > $AUTOENV_FILE_ENTER
$ echo 'echo LEAVE' > $AUTOENV_FILE_LEAVE
$ test_autoenv_auth_env_files
$ cd .
ENTER
$ type -w autostash
autostash: none
[1]
Now on to some stashing.
$ echo 'echo ENTER; autostash FOO=changed' >| $AUTOENV_FILE_ENTER
$ echo 'echo LEAVE; autounstash' >| $AUTOENV_FILE_LEAVE
$ test_autoenv_auth_env_files
Set environment variable.
$ FOO=orig
Activating the env stashes it and applies a new value.
$ cd ..
LEAVE
$ cd sub
ENTER
$ type -w autostash
autostash: function
$ echo $FOO
changed
Leaving the directory unstashes it.
$ cd ..
LEAVE
$ echo $FOO
orig
Test autounstashing when leaving a directory. {{{
Setup:
$ unset VAR
$ 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 unset:
$ echo VAR_set:$+VAR
VAR_set:0
Trigger the autostashing in the enter file.
$ cd ..
LEAVE
no explicit call to autounstash
$ cd sub
ENTER
$ echo $VAR
changed
Now leave again.
$ cd ..
LEAVE
no explicit call to autounstash
$ echo VAR_set:$+VAR
VAR_set:0
Remove the leave file, auto-unstashing should still happen.
$ rm sub/$AUTOENV_FILE_LEAVE
$ cd sub
ENTER
$ echo $VAR
changed
$ cd ..
$ echo VAR_set:$+VAR
VAR_set:0
And once again where a value gets restored.
$ VAR=orig_2
$ echo $VAR
orig_2
$ cd sub
ENTER
$ echo $VAR
changed
$ cd ..
$ echo $VAR
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
}}}