+++ /dev/null
-tests/*.err
+++ /dev/null
-language: generic
-sudo: false
-env:
- - ZSH=4
- - ZSH=5
-
-install:
- - if [ "$ZSH" = 4 ]; then sudo apt-get install zsh; fi
- - if [ "$ZSH" = 5 ]; then wget http://downloads.sourceforge.net/project/zsh/zsh/5.0.7/zsh-5.0.7.tar.bz2; tar xf zsh-5.0.7.tar.bz2; cd zsh-5.0.7; ./configure && sudo make && sudo make install; cd ..; fi
- - pip install --user cram
-script:
- - zsh --version
- - make test_full
+++ /dev/null
-# Empty by default, can be overridden using "make test ZDOTDIR=…".
-ZDOTDIR:=
-# Make it absolute.
-override ZDOTDIR:=$(abspath $(ZDOTDIR))
-
-TEST_SHELL:=zsh
-
-test:
- ZDOTDIR=$(ZDOTDIR) cram --shell=$(TEST_SHELL) -v tests
-
-itest:
- ZDOTDIR=$(ZDOTDIR) cram -i --shell=$(TEST_SHELL) tests
-
-# Run tests with all ZDOTDIRs.
-test_full:
- @ret=0; \
- for i in $(wildcard tests/ZDOTDIR*); do \
- echo "TEST_SHELL=$(TEST_SHELL) ZDOTDIR=$$i"; \
- ZDOTDIR=${CURDIR}/$$i cram --shell=$(TEST_SHELL) -v tests || ret=$$?; \
- echo; \
- done; \
- exit $$ret
-
-# Define targets for test files, with relative and abolute path.
-# Use verbose output, which is useful with Vim's 'errorformat'.
-TESTS:=$(wildcard tests/*.t)
-
-uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
-_TESTS_REL_AND_ABS:=$(call uniq,$(abspath $(TESTS)) $(TESTS))
-$(_TESTS_REL_AND_ABS):
- cram --shell=$(TEST_SHELL) -v $@
-.PHONY: $(_TESTS_REL_AND_ABS)
-
-.PHONY: itest test
-
-clean:
- $(RM) tests/*.err
+++ /dev/null
-[](https://travis-ci.org/Tarrasch/zsh-autoenv)
-
-# Autoenv for Zsh
-
-zsh-autoenv automatically sources (known/whitelisted) `.autoenv.zsh` files,
-typically used in project root directories.
-
-It handles "enter" and leave" events, nesting, and stashing of
-variables (overwriting and restoring).
-
-## Requirements
-
-- Zsh version 4.3.10 or later.
-
-## Features
-
-- Support for enter and leave events, which can use the same file.
- By default it uses `.autoenv.zsh` for entering, and `.autoenv_leave.zsh`
- for leaving.
-- Interactively asks for confirmation / authentication before sourcing an
- unknown `.autoenv.zsh` file, and remembers whitelisted files by their
- hashed content.
-- Test suite.
-- Written in/for Zsh.
-
-### Variable stashing
-
-You can use `autostash` in your `.autoenv.zsh` files to overwrite some
-variable, e.g. `$PATH`. When leaving the directory, it will be automatically
-restored.
-
- % echo 'echo ENTERED; autostash FOO=changed' > project/.autoenv.zsh
- % FOO=orig
- % cd project
- Attempting to load unauthorized env file!
- -rw-rw-r-- 1 user user 36 Mai 6 20:38 /tmp/project/.autoenv.zsh
-
- **********************************************
-
- echo ENTERED; autostash FOO=changed
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') yes
- ENTERED
- project % echo $FOO
- changed
- % cd ..
- % echo $FOO
- orig
-
-There is also `stash`, `unstash` and `autounstash`, in case you want to
-have more control.
-
-The varstash library has been taken from smartcd, and was optimized for Zsh.
-
-## Writing your .autoenv.zsh file
-
-### `autoenv_source_parent()`
-
-zsh-autoenv will stop looking for `.autoenv.zsh` files upwards after the first
-one has been found, but you can use the function `autoenv_source_parent` to
-source the next `.autoenv.zsh` file upwards the directory tree from there.
-
-The function accepts an optional argument, which allows to stop looking before
-the file system root is reached:
-
-```zsh
-autoenv_source_parent ../..
-```
-
-## Installation
-
-Clone the repository and source it from your `~/.zshrc` file:
-
- % git clone https://github.com/Tarrasch/zsh-autoenv ~/.dotfiles/lib/zsh-autoenv
- % echo 'source ~/.dotfiles/lib/zsh-autoenv/autoenv.zsh' >> ~/.zshrc
-
-### Using [antigen](https://github.com/zsh-users/antigen)
-
- antigen-bundle Tarrasch/zsh-autoenv
-
-### Using [zgen](https://github.com/tarjoilija/zgen)
-
-Add the following to your `.zshrc` where you are loading your plugins:
-
- zgen load Tarrasch/zsh-autoenv
-
-### Using [zplug](https://github.com/zplug/zplug)
-
-Add the following to your `.zshrc` where you are loading your plugins:
-
- zplug "Tarrasch/zsh-autoenv"
-
-## Configuration
-
-You can use the following variables to control zsh-autoenv's behavior.
-Add them to your `~/.zshrc` file, before sourcing/loading zsh-autoenv.
-
-### AUTOENV_FILE_ENTER
-
-Name of the file to look for when entering directories.
-
-Default: `.autoenv.zsh`
-
-### AUTOENV_FILE_LEAVE
-
-Name of the file to look for when leaving directories.
-Requires `AUTOENV_HANDLE_LEAVE=1`.
-
-Default: `.autoenv_leave.zsh`
-
-### AUTOENV_LOOK_UPWARDS
-
-Look for zsh-autoenv "enter" files in parent dirs?
-
-Default: `1`
-
-### AUTOENV_HANDLE_LEAVE
-
-Handle leave events when changing away from a subtree, where an "enter"
-event was handled?
-
-Default: `1`
-
-### AUTOENV_DISABLED
-
-(Temporarily) disable zsh-autoenv. This gets looked at in the chpwd handler.
-
-Default: 0
-
-### AUTOENV_DEBUG
-
-Set debug level. If enabled (> 0) it will print information to stderr.
-
-- 0: no debug messages
-- 1: generic debug logging
-- 2: more verbose messages
- - messages about adding/removing files on the internal stack
-- 3: everything
- - sets xtrace option (`set -x`) while sourcing env files
-
-Default: `0`
-
-## Usage
-
-zsh-autoenv works automatically once installed.
-
-You can use ``autoenv-edit`` to edit the nearest/current autoenv files.
-It will use ``$AUTOENV_EDITOR``, ``$EDITOR``, or ``vim`` for editing.
-
-## Helper functions
-
-The following helper functions are available:
-
-### autoenv_append_path
-
-Appends path(s) to `$path` (`$PATH`), if they are not in there already.
-
-### autoenv_prepend_path
-
-Prepends path(s) to `$path` (`$PATH`), if they are not in there already.
-
-### autoenv_remove_path
-
-Removes path(s) from `$path` (`$PATH`).
-
-Returns 0 in case `$path` has changed, 1 otherwise.
-
-## Recipes
-
-### Automatically activate Python virtualenvs
-
-Given `AUTOENV_FILE_ENTER=.autoenv.zsh`, `AUTOENV_FILE_LEAVE=.autoenv.zsh` and
-`AUTOENV_HANDLE_LEAVE=1` the following script will activate Python virtualenvs
-automatically in all subdirectories (`.venv` directories get used by
-[pipenv](https://github.com/kennethreitz/pipenv) with
-`PIPENV_VENV_IN_PROJECT=1`):
-
-```zsh
-# Environment file for all projects.
-# - (de)activates Python virtualenvs (.venv) from pipenv
-
-if [[ $autoenv_event == 'enter' ]]; then
- autoenv_source_parent
-
- _my_autoenv_venv_chpwd() {
- if [[ -z "$_ZSH_ACTIVATED_VIRTUALENV" && -n "$VIRTUAL_ENV" ]]; then
- return
- fi
-
- setopt localoptions extendedglob
- local -a venv
- venv=(./(../)#.venv(NY1:A))
-
- if [[ -n "$_ZSH_ACTIVATED_VIRTUALENV" && -n "$VIRTUAL_ENV" ]]; then
- if ! (( $#venv )) || [[ "$_ZSH_ACTIVATED_VIRTUALENV" != "$venv[1]" ]]; then
- unset _ZSH_ACTIVATED_VIRTUALENV
- echo "De-activating virtualenv: ${(D)VIRTUAL_ENV}" >&2
-
- # Simulate "deactivate", but handle $PATH better (remove VIRTUAL_ENV).
- if ! autoenv_remove_path $VIRTUAL_ENV/bin; then
- echo "warning: ${VIRTUAL_ENV}/bin not found in \$PATH" >&2
- fi
-
- # NOTE: does not handle PYTHONHOME/_OLD_VIRTUAL_PYTHONHOME
- unset _OLD_VIRTUAL_PYTHONHOME
- # NOTE: does not handle PS1/_OLD_VIRTUAL_PS1
- unset _OLD_VIRTUAL_PS1
- unset VIRTUAL_ENV
- fi
- fi
-
- if [[ -z "$VIRTUAL_ENV" ]]; then
- if (( $#venv )); then
- echo "Activating virtualenv: ${(D)venv}" >&2
- export VIRTUAL_ENV=$venv[1]
- autoenv_prepend_path $VIRTUAL_ENV/bin
- _ZSH_ACTIVATED_VIRTUALENV="$venv[1]"
- fi
- fi
- }
- autoload -U add-zsh-hook
- add-zsh-hook chpwd _my_autoenv_venv_chpwd
- _my_autoenv_venv_chpwd
-else
- add-zsh-hook -d chpwd _my_autoenv_venv_chpwd
-fi
-```
-
-## Related projects
-
-- <https://github.com/direnv/direnv>
-- <https://github.com/cxreg/smartcd>
-- <https://github.com/kennethreitz/autoenv>
-
-## History
-
-This started as an optimized version of the bash plugin
-[autoenv](https://github.com/kennethreitz/autoenv) but for Zsh, and grew a lot
-of functionality on top of it (inspired by [smartcd]).
-
-The code was initially based on
-[@joshuaclayton](https://github.com/joshuaclayton)'s dotfiles.
-In September 2013 [@Tarrasch](https://github.com/Tarrasch) packaged it into a
-nice [antigen]-compatible unit with integration tests. Since November 2014,
-[@blueyed](https://github.com/blueyed) took over and added many nice
-features, mainly inspired by [smartcd].
-
-[antigen]: https://github.com/Tarrasch/antigen-hs
-[smartcd]: https://github.com/cxreg/smartcd
+++ /dev/null
-. ${0:h}/autoenv.zsh
+++ /dev/null
-. $(dirname $0)/autoenv.zsh
+++ /dev/null
-# Use invalid module path for zsh, to test alternative zstat implementation.
-
-# Pre-load zsh/parameter, where we do not have/need(?) an alternative
-# implementation.
-zmodload zsh/parameter
-
-module_path=(/dev/null)
-
-zstat() {
- echo "Should not get called."
-}
+++ /dev/null
-antigen-like-loader-function() {
- source "$TESTDIR/../autoenv.plugin.zsh"
-}
-TEST_SOURCE_AUTOENV=antigen-like-loader-function
+++ /dev/null
-# Set uncommon options that caused problems in the past.
-setopt noclobber
-setopt shwordsplit
+++ /dev/null
-Tests for internal stack handling.
-
- $ source $TESTDIR/setup.zsh || return 1
-
-Non-existing entries are allowed and handled without error.
-
- $ _autoenv_stack_entered_add non-existing
- $ echo $_autoenv_stack_entered
- non-existing
-
-Add existing entries.
-
- $ mkdir -p sub/sub2
- $ touch -t 201401010101 sub/file
- $ touch -t 201401010102 sub
- $ touch -t 201401010103 sub/sub2
- $ _autoenv_stack_entered_add sub
- $ _autoenv_stack_entered_add sub/file
- $ _autoenv_stack_entered_add sub/sub2
- $ echo $_autoenv_stack_entered
- non-existing sub sub/file sub/sub2
-
- $ _autoenv_stack_entered_add non-existing
- $ echo $_autoenv_stack_entered
- sub sub/file sub/sub2 non-existing
-
- $ echo ${(k)_autoenv_stack_entered}
- sub sub/file sub/sub2 non-existing
-
- $ echo $_autoenv_stack_entered_mtime
- 1388538180 1388538060 1388538120 0
-
-Touch the file and re-add it.
-
- $ touch -t 201401012359 sub/file
- $ _autoenv_stack_entered_add sub/file
-
-The mtime should have been updated.
-
- $ echo ${_autoenv_stack_entered_mtime[sub/file]}
- 1388620740
-
-It should have moved to the end of the stack.
-
- $ echo ${(k)_autoenv_stack_entered}
- sub sub/sub2 non-existing sub/file
-
-Test lookup of containing elements.
-
- $ _autoenv_stack_entered_contains sub/file
- $ _autoenv_stack_entered_contains non-existing
- $ _autoenv_stack_entered_contains not-added
- [1]
-
-Test removing.
-
- $ _autoenv_stack_entered_remove sub
- $ echo ${_autoenv_stack_entered}
- sub/sub2 non-existing sub/file
-
+++ /dev/null
-Tests for internal util methods.
-
- $ source $TESTDIR/setup.zsh || return 1
-
-Non-existing entries are allowed and handled without error.
-
- $ mkdir -p sub/sub2
- $ touch file sub/file sub/sub2/file
-
-Should not get the file from the current dir.
-
- $ _autoenv_get_file_upwards . file
-
- $ cd sub/sub2
- $ _autoenv_get_file_upwards . file
- ../file
- $ _autoenv_get_file_upwards $PWD file
- */_autoenv_utils.t/sub/file (glob)
-
-_autoenv_get_file_upwards should not dereference symlinks.
-
- $ cd ../..
- $ ln -s sub symlink
- $ cd symlink/sub2
- $ _autoenv_get_file_upwards . file
- ../file
- $ _autoenv_get_file_upwards $PWD file
- */_autoenv_utils.t/symlink/file (glob)
-
-Tests for _autoenv_authorize. {{{
-
-Auth file is empty.
-
- $ cd ../..
- $ ! [[ -f "$AUTOENV_AUTH_FILE" ]] || cat $AUTOENV_AUTH_FILE
-
-Failed authorization should keep the auth file empty.
-
- $ _autoenv_authorize does-not-exist
- Missing file argument for _autoenv_hash_pair!
- [1]
- $ cat $AUTOENV_AUTH_FILE
-
-Now adding some auth pair.
-
- $ echo first > first
- $ _autoenv_authorize first
- $ cat $AUTOENV_AUTH_FILE
- :/*/cramtests-*/_autoenv_utils.t/first:2715464726.6:2 (glob)
-
-And a second one.
-
- $ echo second > second
- $ _autoenv_authorize second
- $ cat $AUTOENV_AUTH_FILE
- :/*/cramtests-*/_autoenv_utils.t/first:2715464726.6:2 (glob)
- :/*/cramtests-*/_autoenv_utils.t/second:594940475.7:2 (glob)
-
-And a third.
-
- $ echo third > third
- $ _autoenv_authorize third
- $ cat $AUTOENV_AUTH_FILE
- :/*/cramtests-*/_autoenv_utils.t/first:2715464726.6:2 (glob)
- :/*/cramtests-*/_autoenv_utils.t/second:594940475.7:2 (glob)
- :/*/cramtests-*/_autoenv_utils.t/third:451243482.6:2 (glob)
-
-Re-add the second one, with the same hash.
-
- $ _autoenv_authorize second
- $ cat $AUTOENV_AUTH_FILE
- :/*/cramtests-*/_autoenv_utils.t/first:2715464726.6:2 (glob)
- :/*/cramtests-*/_autoenv_utils.t/third:451243482.6:2 (glob)
- :/*/cramtests-*/_autoenv_utils.t/second:594940475.7:2 (glob)
-
-Re-add the first one, with a new hash.
-
- $ echo one more line >> first
- $ _autoenv_authorize first
- $ cat $AUTOENV_AUTH_FILE
- :/*/cramtests-*/_autoenv_utils.t/third:451243482.6:2 (glob)
- :/*/cramtests-*/_autoenv_utils.t/second:594940475.7:2 (glob)
- :/*/cramtests-*/_autoenv_utils.t/first:3620404822.20:2 (glob)
-}}}
-
-
-Explicit calls to _autoenv_get_file_mtime to test alternative implementation
-of _autoenv_get_file_mtime (via ZDOTDIR.invalid-module_path/).
-
- $ _autoenv_get_file_mtime non-existing
- 0
- $ touch -t 201401010101 file
- $ _autoenv_get_file_mtime file
- 1388538060
- $ mkdir dir
- $ touch -t 201401010102 dir
- $ _autoenv_get_file_mtime dir
- 1388538120
-
-Stops when last (absolute) path does not change anymore.
-
- $ _autoenv_get_file_upwards / doesnotexist nevermatches
+++ /dev/null
- $ source $TESTDIR/setup.zsh || return 1
-
- $ export EDITOR=echo
-
- $ autoenv-edit
- No .autoenv.zsh file found (enter).
- No .autoenv_leave.zsh file found (leave).
- [1]
-
- $ touch .autoenv.zsh
- $ autoenv-edit
- No .autoenv_leave.zsh file found (leave).
- Editing .autoenv.zsh..
- .autoenv.zsh
-
- $ AUTOENV_FILE_LEAVE=$AUTOENV_FILE_ENTER
- $ autoenv-edit
- Editing .autoenv.zsh..
- .autoenv.zsh (glob)
-
- $ mkdir sub
- $ cd -q sub
- $ autoenv-edit
- Editing ../.autoenv.zsh..
- ../.autoenv.zsh
-
-Supports command with args for EDITOR.
-
- $ export EDITOR='printf file:%s\\n'
- $ autoenv-edit
- Editing ../.autoenv.zsh..
- file:../.autoenv.zsh
-
-Supports alias for EDITOR.
-
- $ alias myeditor_alias='printf file:%s'
- $ export EDITOR=myeditor_alias
- $ autoenv-edit
- Editing ../.autoenv.zsh..
- file:../.autoenv.zsh (no-eol)
-
-Falls back to "vim" for EDITOR.
-
- $ alias vim='printf vim_file:%s'
- $ unset EDITOR
- $ autoenv-edit
- Editing ../.autoenv.zsh..
- vim_file:../.autoenv.zsh (no-eol)
-
-Note with AUTOENV_LOOK_UPWARDS=0
-
- $ EDITOR=true
- $ AUTOENV_LOOK_UPWARDS=0
- $ autoenv-edit
- Note: found ../.autoenv.zsh, but AUTOENV_LOOK_UPWARDS is disabled.
- Editing ../.autoenv.zsh..
-
- $ AUTOENV_FILE_LEAVE=.autoenv_leave.zsh
- $ touch ../$AUTOENV_FILE_LEAVE
- $ autoenv-edit
- Note: found ../.autoenv.zsh, but AUTOENV_LOOK_UPWARDS is disabled.
- Note: found ../.autoenv_leave.zsh, but AUTOENV_LOOK_UPWARDS is disabled.
- Editing ../.autoenv.zsh ../.autoenv_leave.zsh..
-
- $ touch $AUTOENV_FILE_LEAVE
- $ autoenv-edit
- Note: found ../.autoenv.zsh, but AUTOENV_LOOK_UPWARDS is disabled.
- Editing ../.autoenv.zsh .autoenv_leave.zsh..
+++ /dev/null
- $ source $TESTDIR/setup.zsh || return 1
-
-Lets set a simple .autoenv.zsh action
-
- $ echo 'echo ENTERED' > .autoenv.zsh
-
-Manually create auth file
-
- $ test_autoenv_add_to_env $PWD/.autoenv.zsh
- $ cd .
- ENTERED
-
-Now try to make it accept it
-
- $ _autoenv_stack_entered=()
- $ rm $AUTOENV_AUTH_FILE
- $ _autoenv_ask_for_yes() { echo "yes" }
- $ cd .
- Attempting to load unauthorized env file!
- -* /*/cramtests-*/autoenv.t/.autoenv.zsh (glob)
-
- **********************************************
-
- echo ENTERED
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') yes
- ENTERED
-
-
-The last "ENTERED" is because it executed the command.
-
-Now lets see that it actually checks the shasum value.
-
- $ _autoenv_stack_entered=()
- $ cd .
- ENTERED
-
- $ _autoenv_stack_entered=()
- $ rm $AUTOENV_AUTH_FILE
- $ test_autoenv_add_to_env $PWD/.autoenv.zsh mischief
- $ cd .
- Attempting to load unauthorized env file!
- -* /*/cramtests-*/autoenv.t/.autoenv.zsh (glob)
-
- **********************************************
-
- echo ENTERED
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') yes
- ENTERED
-
-
-Now, will it take no for an answer?
-
- $ _autoenv_stack_entered=()
- $ rm $AUTOENV_AUTH_FILE
- $ _autoenv_ask_for_yes() { echo "no"; return 1 }
- $ cd .
- Attempting to load unauthorized env file!
- -* /*/cramtests-*/autoenv.t/.autoenv.zsh (glob)
-
- **********************************************
-
- echo ENTERED
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') no
-
-
-Lets also try one more time to ensure it didn't add it.
-
- $ _autoenv_ask_for_yes() { echo "yes"; return 0 }
- $ cd .
- Attempting to load unauthorized env file!
- -* /*/cramtests-*/autoenv.t/.autoenv.zsh (glob)
-
- **********************************************
-
- echo ENTERED
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') yes
- ENTERED
-
-Reloading the script should keep the current state, e.g. when reloading your
-~/.zshrc.
-
- $ $TEST_SOURCE_AUTOENV
- $ cd .
+++ /dev/null
-Tests for provided utils/helpers.
-
- $ source $TESTDIR/setup.zsh || return 1
-
- $ PATH=
- $ autoenv_prepend_path custom_path
- $ echo $PATH
- custom_path
-
- $ autoenv_prepend_path custom_path
- $ echo $PATH
- custom_path
-
- $ autoenv_prepend_path another_path a_third_one
- $ echo $PATH
- a_third_one:another_path:custom_path
-
- $ autoenv_remove_path another_path a_third_one
- $ echo $PATH
- custom_path
-
- $ autoenv_remove_path does_not_exist
- [1]
- $ echo $PATH
- custom_path
-
- $ autoenv_remove_path custom_path
- $ echo PATH:$PATH
- PATH:
+++ /dev/null
-Test $PWD, $autoenv_event, $autoenv_from_dir and $autoenv_to_dir.
-
- $ source $TESTDIR/setup.zsh || return 1
-
-Setup env actions / output.
-
- $ AUTOENV_LOOK_UPWARDS=1
- $ mkdir -p sub/sub2
- $ cd sub
- $ echo 'echo ENTERED: PWD:${PWD:t} pwd:${${"$(pwd)"}:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .autoenv.zsh
- $ echo 'echo LEFT: PWD:${PWD:t} pwd:${${"$(pwd)"}:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .autoenv_leave.zsh
-
-Manually create auth files.
-
- $ test_autoenv_auth_env_files
-
-The actual tests.
-
- $ cd .
- ENTERED: PWD:sub pwd:sub from:sub to:sub event:enter
-
- $ cd ..
- LEFT: PWD:cwd.t pwd:cwd.t from:sub to:cwd.t event:leave
-
- $ cd sub/sub2
- ENTERED: PWD:sub2 pwd:sub2 from:cwd.t to:sub2 event:enter
-
-Check that symlinked dirs get handled correctly.
-
- $ cd ../..
- LEFT: PWD:cwd.t pwd:cwd.t from:sub2 to:cwd.t event:leave
- $ ln -s sub sub_linked
- $ cd sub_linked
- ENTERED: PWD:sub_linked pwd:sub_linked from:cwd.t to:sub_linked event:enter
- $ cd sub2
-
- $ cd ../..
- LEFT: PWD:cwd.t pwd:cwd.t from:sub2 to:cwd.t event:leave
- $ cd sub_linked/sub2
- ENTERED: PWD:sub2 pwd:sub2 from:cwd.t to:sub2 event:enter
+++ /dev/null
- $ source $TESTDIR/setup.zsh || return 1
-
-Lets set a simple .autoenv.zsh action
-
- $ mkdir sub
- $ cd sub
- $ echo 'echo ENTERED' > .autoenv.zsh
- $ echo 'echo LEFT' > .autoenv_leave.zsh
-
-Change to the directory.
-
- $ _autoenv_ask_for_yes() { echo "yes"; return 0 }
- $ cd .
- Attempting to load unauthorized env file!
- -* /*/cramtests-*/leave.t/sub/.autoenv.zsh (glob)
-
- **********************************************
-
- echo ENTERED
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') yes
- ENTERED
-
-
-Leave the directory and answer "no".
-
- $ _autoenv_ask_for_yes() { echo "no"; return 1 }
- $ cd ..
- Attempting to load unauthorized env file!
- -* /*/cramtests-*/leave.t/sub/.autoenv_leave.zsh (glob)
-
- **********************************************
-
- echo LEFT
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') no
-
-
- $ cd sub
- ENTERED
- $ _autoenv_ask_for_yes() { echo "yes"; return 0 }
- $ cd ..
- Attempting to load unauthorized env file!
- -* /*/cramtests-*/leave.t/sub/.autoenv_leave.zsh (glob)
-
- **********************************************
-
- echo LEFT
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') yes
- LEFT
-
-
-Now check with subdirs, looking upwards.
-
- $ AUTOENV_LOOK_UPWARDS=1
- $ mkdir sub/child
- $ cd sub/child
- ENTERED
- $ cd .
- $ cd ..
- $ cd ..
- LEFT
-
-
-Now check with subdirs, not looking at parent dirs.
-
- $ AUTOENV_LOOK_UPWARDS=0
- $ cd sub/child
- $ cd ..
- ENTERED
- $ cd child
- $ cd ../..
- LEFT
-
-
-Test that .autoenv.zsh is sourced only once with AUTOENV_HANDLE_LEAVE=0.
-
- $ unset _autoenv_stack_entered
- $ AUTOENV_HANDLE_LEAVE=0
- $ cd sub
- ENTERED
- $ cd ..
- $ cd sub
-
-
-Test that "leave" is not triggered when entering an outside dir via symlink.
-
- $ AUTOENV_HANDLE_LEAVE=1
- $ cd ..
- LEFT
- $ mkdir outside
- $ cd outside
- $ echo 'echo ENTERED outside: PWD:${PWD:t} pwd:${${"$(pwd)"}:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .autoenv.zsh
- $ echo 'echo LEFT outside: PWD:${PWD:t} pwd:${${"$(pwd)"}:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t} event:${autoenv_event}' > .autoenv_leave.zsh
- $ echo 'echo LEFT: autoenv_env_file:${autoenv_env_file}' >> .autoenv_leave.zsh
- $ test_autoenv_auth_env_files
-
- $ cd ..
- $ ln -s ../outside sub/symlink
- $ cd sub
- ENTERED
- $ cd symlink
- ENTERED outside: PWD:symlink pwd:symlink from:sub to:symlink event:enter
-
- $ cd ../..
- LEFT
- LEFT outside: PWD:leave.t pwd:leave.t from:symlink to:leave.t event:leave
- LEFT: autoenv_env_file:*/leave.t/sub/symlink/.autoenv_leave.zsh (glob)
- $ cd sub/symlink
- ENTERED outside: PWD:symlink pwd:symlink from:leave.t to:symlink event:enter
-
-$autoenv_env_file should not be exported.
-
- $ echo -n $autoenv_env_file
-
-$autoenv_env_file should be reset when leaving.
-
- $ echo -n $autoenv_env_file
- $ cd ../..
- LEFT outside: PWD:leave.t pwd:leave.t from:symlink to:leave.t event:leave
- LEFT: autoenv_env_file:*/leave.t/sub/symlink/.autoenv_leave.zsh (glob)
- $ echo ${autoenv_env_file:-empty}
- empty
+++ /dev/null
-Test recursing into parent .autoenv.zsh files.
-
- $ source $TESTDIR/setup.zsh || return 1
-
-Setup env actions / output.
-
- $ AUTOENV_LOOK_UPWARDS=1
-
-Create env files in root dir.
-
- $ echo 'echo ENTERED_root: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv.zsh
- $ echo 'echo LEFT_root: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv_leave.zsh
- $ test_autoenv_auth_env_files
-
-Create env files in sub dir.
-
- $ mkdir -p sub/sub2
- $ cd sub
- ENTERED_root: PWD:sub from:recurse-upwards.t to:sub
-
- $ echo 'echo ENTERED_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv.zsh
- $ echo 'echo LEFT_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv_leave.zsh
- $ test_autoenv_auth_env_files
-
-The actual tests.
-
- $ cd .
- ENTERED_sub: PWD:sub from:sub to:sub
-
- $ cd ..
- LEFT_sub: PWD:recurse-upwards.t from:sub to:recurse-upwards.t
-
- $ cd sub/sub2
- ENTERED_sub: PWD:sub2 from:recurse-upwards.t to:sub2
-
- $ cd ..
-
-Changing the .autoenv.zsh file should re-source it.
-
- $ echo 'echo ENTER2' >> .autoenv.zsh
-
-Set timestamp of auth file into the past, so it gets seen as new below.
-
- $ touch -t 201401010101 .autoenv.zsh
-
- $ test_autoenv_auth_env_files
- $ cd .
- ENTERED_sub: PWD:sub from:sub to:sub
- ENTER2
-
-Add sub/sub2/.autoenv.zsh file, with a call to autoenv_source_parent.
-
- $ echo "echo autoenv_source_parent_from_sub2:\nautoenv_source_parent\necho done_sub2\n" > sub2/.autoenv.zsh
- $ test_autoenv_add_to_env sub2/.autoenv.zsh
- $ cd sub2
- autoenv_source_parent_from_sub2:
- ENTERED_sub: PWD:sub2 from:sub to:sub2
- ENTER2
- done_sub2
-
-Move sub/.autoenv.zsh away, now the root .autoenv.zsh file should get sourced.
-
- $ mv ../.autoenv.zsh ../.autoenv.zsh.out
- $ touch -t 201401010102 .autoenv.zsh
- $ cd .
- autoenv_source_parent_from_sub2:
- ENTERED_root: PWD:sub2 from:sub2 to:sub2
- done_sub2
- $ mv ../.autoenv.zsh.out ../.autoenv.zsh
-
-Prepend call to autoenv_source_parent to sub/.autoenv.zsh file.
-
- $ cd ..
- $ echo -e "echo autoenv_source_parent_from_sub:\nautoenv_source_parent\n$(cat .autoenv.zsh)" >| .autoenv.zsh
- $ echo "echo done_sub" >> .autoenv.zsh
- $ touch -t 201401010103 .autoenv.zsh
- $ test_autoenv_auth_env_files
-
- $ cd .
- autoenv_source_parent_from_sub:
- ENTERED_root: PWD:sub from:sub to:sub
- ENTERED_sub: PWD:sub from:sub to:sub
- ENTER2
- done_sub
-
-
-Add sub/sub2/.autoenv.zsh file.
-
- $ echo -e "echo autoenv_source_parent_from_sub2:\nautoenv_source_parent\necho done_sub2\n" >| sub2/.autoenv.zsh
- $ test_autoenv_add_to_env sub2/.autoenv.zsh
- $ cd sub2
- autoenv_source_parent_from_sub2:
- autoenv_source_parent_from_sub:
- ENTERED_root: PWD:sub2 from:sub to:sub2
- ENTERED_sub: PWD:sub2 from:sub to:sub2
- ENTER2
- done_sub
- done_sub2
-
-Go to root.
-This should not trigger the enter event, because it was handled via
-autoenv_source_parent already.
-
- $ cd ../..
- LEFT_sub: PWD:recurse-upwards.t from:sub2 to:recurse-upwards.t
-
-
-Changing the root .autoenv.zsh should trigger re-authentication via
-autoenv_source_parent.
-
-First, let's answer "no".
-
- $ echo "echo NEW" >| .autoenv.zsh
- $ _autoenv_ask_for_yes() { echo "no"; return 1 }
- $ cd sub
- autoenv_source_parent_from_sub:
- Attempting to load unauthorized env file!
- -* /*/cramtests-*/recurse-upwards.t/.autoenv.zsh (glob)
-
- **********************************************
-
- echo NEW
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') no
- ENTERED_sub: PWD:sub from:recurse-upwards.t to:sub
- ENTER2
- done_sub
-
-Now with "yes".
-This currently does not trigger re-execution of the .autoenv.zsh file.
-
- $ _autoenv_ask_for_yes() { echo "yes"; return 0 }
- $ cd .
-
-Touching the .autoenv.zsh file will now source the parent env file.
-
- $ touch -t 201401010104 .autoenv.zsh
- $ cd .
- autoenv_source_parent_from_sub:
- Attempting to load unauthorized env file!
- -* /*/cramtests-*/recurse-upwards.t/.autoenv.zsh (glob)
-
- **********************************************
-
- echo NEW
-
- **********************************************
-
- Would you like to authorize it? (type 'yes') yes
- NEW
- ENTERED_sub: PWD:sub from:sub to:sub
- ENTER2
- done_sub
-
-
- $ cd ..
- LEFT_sub: PWD:recurse-upwards.t from:sub to:recurse-upwards.t
- $ mkdir sub/sub2/sub3
- $ cd sub/sub2/sub3
- autoenv_source_parent_from_sub2:
- autoenv_source_parent_from_sub:
- NEW
- ENTERED_sub: PWD:sub3 from:recurse-upwards.t to:sub3
- ENTER2
- done_sub
- done_sub2
+++ /dev/null
-# Setup for tests.
-#
-# It returns 1 in case of errors, and no tests should be run then!
-#
-# Ensure we have our mocked out AUTOENV_AUTH_FILE
-# (via .zshenv).
-
-# Treat unset variables as errors.
-# Not handled in varstash yet.
-# setopt nounset
-
-export AUTOENV_AUTH_FILE="$CRAMTMP/autoenv/.autoenv_auth"
-
-# Abort this setup script on any error.
-_save_errexit=${options[errexit]}
-set -e
-
-# Can be defined in .zshenv, e.g. tests/ZDOTDIR.loadviafunction/.zshenv.
-if [[ -z $TEST_SOURCE_AUTOENV ]]; then
- TEST_SOURCE_AUTOENV=(source $TESTDIR/../autoenv.plugin.zsh)
-fi
-$TEST_SOURCE_AUTOENV
-
-# Reset any authentication.
-if [[ -f $AUTOENV_AUTH_FILE ]]; then
- echo -n >| $AUTOENV_AUTH_FILE
-fi
-
-# Add file ($1), version ($2), and optional hash ($3) to authentication file.
-test_autoenv_add_to_env() {
- emulate -L zsh
- [[ -d ${AUTOENV_AUTH_FILE:h} ]] || mkdir -p ${AUTOENV_AUTH_FILE:h}
- _autoenv_deauthorize $1
- {
- local ret_pair
- _autoenv_hash_pair $1 2 ${2:-} && echo $ret_pair
- } >>| $AUTOENV_AUTH_FILE
-}
-
-# Add enter and leave env files to authentication file.
-test_autoenv_auth_env_files() {
- local dir=${1:-$PWD}
- test_autoenv_add_to_env $dir/$AUTOENV_FILE_ENTER
- test_autoenv_add_to_env $dir/$AUTOENV_FILE_LEAVE
-}
-
-# Now keep on going on errors again.
-options[errexit]=$_save_errexit
-unset _save_errexit
+++ /dev/null
-Test recursing into parent .autoenv.zsh files.
-
- $ source $TESTDIR/setup.zsh || return 1
-
-Setup env actions / output.
-
- $ AUTOENV_LOOK_UPWARDS=1
-
-Create env files in root dir.
-
- $ echo 'echo ENTERED_root: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv.zsh
- $ echo 'echo LEFT_root: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv_leave.zsh
- $ test_autoenv_auth_env_files
-
-Create env files in sub dir.
-
- $ mkdir -p sub/sub2/sub3/sub4
- $ cd sub
- ENTERED_root: PWD:sub from:source-parent-until.t to:sub
-
- $ echo 'echo ENTERED_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv.zsh
- $ echo 'echo LEFT_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv_leave.zsh
- $ test_autoenv_auth_env_files
-
- $ cd sub2
- ENTERED_sub: PWD:sub2 from:sub to:sub2
- $ echo 'echo ENTERED_sub2: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv.zsh
- $ echo 'echo LEFT_sub2: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv_leave.zsh
- $ test_autoenv_auth_env_files
-
-The actual tests.
-
-# $ cd sub3
-# ENTERED_sub2: PWD:sub3 from:sub2 to:sub3
-# $ cd ../..
-# LEFT_sub2: PWD:sub from:sub3 to:sub
- $ cd ..
-
-Add sub/sub2/sub3/.autoenv.zsh file, with a call to autoenv_source_parent,
-stopping at the parent dir.
-
- $ echo "echo autoenv_source_parent_from_sub3:\nautoenv_source_parent ..\necho done_sub3\n" > sub2/sub3/.autoenv.zsh
- $ test_autoenv_add_to_env sub2/sub3/.autoenv.zsh
- $ cd sub2/sub3
- autoenv_source_parent_from_sub3:
- ENTERED_sub2: PWD:sub3 from:sub to:sub3
- done_sub3
-
-Look up to `../..` now.
-
- $ cd ../..
- LEFT_sub2: PWD:sub from:sub3 to:sub
- $ echo "echo autoenv_source_parent_from_sub3:\nautoenv_source_parent ../..\necho done_sub3\n" >| sub2/sub3/.autoenv.zsh
- $ test_autoenv_add_to_env sub2/sub3/.autoenv.zsh
- $ cd sub2/sub3
- autoenv_source_parent_from_sub3:
- ENTERED_sub2: PWD:sub3 from:sub to:sub3
- done_sub3
-
-Remove intermediate .autoenv.zsh from sub2.
-
- $ cd ../..
- LEFT_sub2: PWD:sub from:sub3 to:sub
- $ rm sub2/.autoenv.zsh
-
-Should source "sub" for ../.. now.
-
- $ echo "echo autoenv_source_parent_from_sub3:\nautoenv_source_parent ../..\necho done_sub3\n" >| sub2/sub3/.autoenv.zsh
- $ test_autoenv_add_to_env sub2/sub3/.autoenv.zsh
- $ cd sub2/sub3
- autoenv_source_parent_from_sub3:
- ENTERED_sub: PWD:sub3 from:sub to:sub3
- done_sub3
-
-Should source nothing for .. now.
-
- $ cd ../..
- $ echo "echo autoenv_source_parent_from_sub3:\nautoenv_source_parent ..\necho done_sub3\n" >| sub2/sub3/.autoenv.zsh
- $ test_autoenv_add_to_env sub2/sub3/.autoenv.zsh
- $ cd sub2/sub3
- autoenv_source_parent_from_sub3:
- done_sub3
-
-Look up to "/" (default).
-
- $ cd ../..
- $ echo "echo autoenv_source_parent_from_sub3:\nautoenv_source_parent /\necho done_sub3\n" >| sub2/sub3/.autoenv.zsh
- $ test_autoenv_add_to_env sub2/sub3/.autoenv.zsh
- $ cd sub2/sub3
- autoenv_source_parent_from_sub3:
- ENTERED_sub: PWD:sub3 from:sub to:sub3
- done_sub3
-
-Handles dirs with spaces.
-
- $ mkdir "dir with space"
- $ echo "echo entered \$PWD\n" >| "dir with space/.autoenv.zsh"
- $ test_autoenv_add_to_env "dir with space/.autoenv.zsh"
- $ cd "dir with space"
- entered */dir with space (glob)
-
-Handles dirs with spaces outside any root (should not hang).
-
- $ cd $CRAMTMP || exit
- LEFT_root: * (glob)
- LEFT_sub: * (glob)
- $ mkdir "dir with space"
- $ cd "dir with space"
+++ /dev/null
-Test vars with autoenv_source_parent.
-
- $ source $TESTDIR/setup.zsh || return 1
-
-Setup env actions / output.
-
- $ AUTOENV_LOOK_UPWARDS=1
-
-Create env files in root dir.
-
- $ echo 'echo ENTERED_root: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv.zsh
- $ echo 'echo LEFT_root: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > .autoenv_leave.zsh
- $ test_autoenv_auth_env_files
-
-Create env files in sub dir.
-
- $ mkdir -p sub/sub2
- $ echo 'echo ENTERED_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > sub/.autoenv.zsh
- $ echo 'echo LEFT_sub: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > sub/.autoenv_leave.zsh
- $ test_autoenv_auth_env_files sub
-
- $ echo 'echo ENTERED_sub2: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > sub/sub2/.autoenv.zsh
- $ echo 'echo LEFT_sub2: PWD:${PWD:t} from:${autoenv_from_dir:t} to:${autoenv_to_dir:t}' > sub/sub2/.autoenv_leave.zsh
- $ echo 'echo autoenv_source_parent_from_sub2\n' >> sub/sub2/.autoenv.zsh
- $ echo 'echo autoenv_env_file_1:${autoenv_env_file:h:t}\nautoenv_source_parent\n' >> sub/sub2/.autoenv.zsh
- $ echo 'echo autoenv_env_file_2:${autoenv_env_file:h:t}\necho done_sub3\n' >> sub/sub2/.autoenv.zsh
- $ test_autoenv_auth_env_files sub/sub2
-
-The actual tests.
-
- $ cd sub/sub2
- ENTERED_sub2: PWD:sub2 from:source-parent-vars.t to:sub2
- autoenv_source_parent_from_sub2
- autoenv_env_file_1:sub2
- ENTERED_sub: PWD:sub2 from:source-parent-vars.t to:sub2
- autoenv_env_file_2:sub2
- done_sub3
-
+++ /dev/null
-Tests for upgrading hashes.
-
- $ source $TESTDIR/setup.zsh || return 1
-
- $ mkdir -p sub
- $ mkdir -p ${AUTOENV_AUTH_FILE:h}
-
-Create a single v1 hash entry.
-
- $ echo 'echo ENTERED' > sub/$AUTOENV_FILE_ENTER
- $ echo 'echo LEAVE' > sub/$AUTOENV_FILE_LEAVE
-
- $ echo :$PWD/sub/$AUTOENV_FILE_ENTER:4c403f1870af2ab5472370a42b6b2b488cefe83c:1 >| $AUTOENV_AUTH_FILE
- $ cd sub
- ENTERED
-
-Hashes should get upgraded automatically.
-This also tests that there are no empty lines being added to the auth file when
-de-authenticating the old hash.
-
- $ cat $AUTOENV_AUTH_FILE
- :/*/cramtests-*/upgrade_hash.t/sub/.autoenv.zsh:3679467995.13:2 (glob)
-
-Re-create auth file with v1 hashes for both auth files.
-
- $ echo :$PWD/$AUTOENV_FILE_LEAVE:882cf0333ea3c35537c9459c08d8987f25087ea9:1 >| $AUTOENV_AUTH_FILE
- $ echo :$PWD/$AUTOENV_FILE_ENTER:4c403f1870af2ab5472370a42b6b2b488cefe83c:1 >>| $AUTOENV_AUTH_FILE
-
-Only the leave file's hash should get updated.
-
- $ cd ..
- LEAVE
- $ cat $AUTOENV_AUTH_FILE
- :/*/cramtests-*/upgrade_hash.t/sub/.autoenv.zsh:4c403f1870af2ab5472370a42b6b2b488cefe83c:1 (glob)
- :/*/cramtests-*/upgrade_hash.t/sub/.autoenv_leave.zsh:803077150.11:2 (glob)
-
-The enter file's hash should get updated.
-
- $ cd sub
- ENTERED
- $ cat $AUTOENV_AUTH_FILE
- :/*/cramtests-*/upgrade_hash.t/sub/.autoenv_leave.zsh:803077150.11:2 (glob)
- :/*/cramtests-*/upgrade_hash.t/sub/.autoenv.zsh:3679467995.13:2 (glob)
+++ /dev/null
-Test varstash integration with regard to aliases.
-
- $ source $TESTDIR/setup.zsh || return 1
-
-Setup test environment.
-
- $ mkdir sub
- $ cd sub
- $ echo 'echo ENTER' > $AUTOENV_FILE_ENTER
- $ echo 'autostash alias some_alias="echo NEW_ALIAS"' >> $AUTOENV_FILE_ENTER
- $ echo 'echo LEAVE' > $AUTOENV_FILE_LEAVE
- $ test_autoenv_auth_env_files
-
-Aliases should be stashed.
-
- $ alias some_alias="echo ORIG_ALIAS"
- $ some_alias
- ORIG_ALIAS
- $ cd .
- ENTER
- $ some_alias
- NEW_ALIAS
- $ cd ..
- LEAVE
- $ some_alias
- ORIG_ALIAS
-
-Aliases should be stashed, if there are also environment variables.
-
- $ some_alias=ENV_VAR
- $ some_alias
- ORIG_ALIAS
- $ cd sub
- ENTER
- $ type -w some_alias
- some_alias: alias
- $ echo $some_alias
- ENV_VAR
+++ /dev/null
-Test unstash behavior on leaving.
-
- $ source $TESTDIR/setup.zsh || return 1
-
-Setup test environment.
-
- $ mkdir -p sub/sub2
- $ 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/sub2
- ENTER
- $ echo $FOO
- changed
-
-Leaving the directory unstashes it (varstash_dir is set to prev dir).
-
- $ cd -
- LEAVE
- $ echo $FOO
- orig
+++ /dev/null
-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
-
-}}}
+++ /dev/null
-Test varstash with exported variables in subshell.
-
- $ source $TESTDIR/setup.zsh || return 1
-
-Setup test environment.
-
- $ mkdir sub
- $ cd sub
- $ echo 'echo ENTER; autostash MYVAR=changed; autostash MYEXPORT=changed_export' > $AUTOENV_FILE_ENTER
- $ echo 'echo LEAVE; autounstash' > $AUTOENV_FILE_LEAVE
-
-Manually create auth file
-
- $ test_autoenv_auth_env_files
-
-Set environment variable.
-
- $ MYVAR=orig
- $ export MYEXPORT=orig_export
-
-Activating the env stashes it and applies a new value.
-
- $ cd .
- ENTER
- $ echo $MYVAR
- changed
- $ echo $MYEXPORT
- changed_export
-
-The variable is not available in a subshell, only the exported one.
-
- $ $TESTSHELL -c 'echo ${MYVAR:-empty}; echo $MYEXPORT'
- empty
- changed_export
-
-Activate autoenv in the subshell.
-
- $ $TESTSHELL -c "$TEST_SOURCE_AUTOENV; echo \${MYVAR}; echo \$MYEXPORT"
- ENTER
- changed
- changed_export
-
-"autounstash" should handle the exported variables.
-
- $ $TESTSHELL -c "$TEST_SOURCE_AUTOENV; cd ..; echo \${MYVAR:-empty}; echo \$MYEXPORT"
- ENTER
- LEAVE
- empty
- orig_export