mirror of
https://github.com/Tarrasch/zsh-autoenv.git
synced 2024-11-22 15:30:59 +02:00
e68a914487
This changes the defaults: - AUTOENV_FILE_ENTER: .env => .autoenv.zsh - AUTOENV_FILE_LEAVE: .env_leave => .autoenv_leave.zsh `.env` is usually used only for key-value pairs for environment settings, e.g. with foreman. We do not want to interfere with this. This also renames the setting/variable AUTOENV_ENV_FILENAME to AUTOENV_AUTH_FILE, and uses the [XDG spec](http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables) for the default location. The new default location for the auth file will be ~/.local/share/autoenv_auth. When the old setting is used, or the previous default exists, a warning is given with instructions. Fixes https://github.com/Tarrasch/zsh-autoenv/issues/31. Closes https://github.com/Tarrasch/zsh-autoenv/pull/32.
169 lines
4.4 KiB
Perl
169 lines
4.4 KiB
Perl
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 ..
|
|
$ sed -i -e "1s/^/echo autoenv_source_parent_from_sub:\nautoenv_source_parent\n/" .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!
|
|
-* /tmp/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!
|
|
-* /tmp/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
|