autoenv.zsh | 5 +++++ tests/autoenv.t | 4 ++-- tests/cwd.t | 3 +-- tests/setup.sh | 12 ++++++++++++ tests/varstash.t | 3 +-- diff --git a/autoenv.zsh b/autoenv.zsh index 5be6c315e3e2781a89f962b3145be620a0014f59..317217f43a048ac6870696cabb8b33b610a6e824 100644 --- a/autoenv.zsh +++ b/autoenv.zsh @@ -24,6 +24,11 @@ _dotenv_hash_pair() { local env_file=$1 + if (( $+2 )); then + env_shasum=$2 + else + env_shasum=$(shasum $env_file | cut -d' ' -f1) + fi echo "$env_file:$env_shasum:1" } diff --git a/tests/autoenv.t b/tests/autoenv.t index 47509129e259bf31fd504573da2a28a02ef6277d..f477c1377ef9e0dd1b1068f1a06253c4012a1557 100644 --- a/tests/autoenv.t +++ b/tests/autoenv.t @@ -6,7 +6,7 @@ $ echo 'echo ENTERED' >> .env Manually create auth file - $ echo "$PWD/.env:$(echo echo ENTERED | shasum)" > $AUTOENV_ENV_FILENAME + $ test_autoenv_add_to_env $PWD/.env $ cd . ENTERED @@ -41,7 +41,7 @@ ENTERED $ unset _dotenv_stack_entered $ rm $AUTOENV_ENV_FILENAME - $ echo "$PWD/.env:$(echo mischief | shasum)" > $AUTOENV_ENV_FILENAME + $ test_autoenv_add_to_env $PWD/.env mischief $ cd . Attempting to load unauthorized env file: /tmp/cramtests-??????/autoenv.t/.env (glob) diff --git a/tests/cwd.t b/tests/cwd.t index 99f77fe45ebf81bdbd6b73bad0671836d9161fbb..2c5838a2be75a3f880c3b6c96db6b94157e7a19a 100644 --- a/tests/cwd.t +++ b/tests/cwd.t @@ -12,8 +12,7 @@ $ echo 'echo LEFT: cwd:${PWD:t} ${_dotenv_cwd:t}' >> .env.leave Manually create auth files. - $ echo "$PWD/$DOTENV_FILE_ENTER:$(echo $(<$DOTENV_FILE_ENTER) | shasum)" > $AUTOENV_ENV_FILENAME - $ echo "$PWD/$DOTENV_FILE_LEAVE:$(echo $(<$DOTENV_FILE_LEAVE) | shasum)" >> $AUTOENV_ENV_FILENAME + $ test_autoenv_auth_env_files The actual tests. diff --git a/tests/setup.sh b/tests/setup.sh index b2f5aafb12b1d749b524fb4b0526b90c61afff0b..a7da1b46b5d811485f8b404de959c2d4a58c59c8 100644 --- a/tests/setup.sh +++ b/tests/setup.sh @@ -1,6 +1,18 @@ # Ensure we have our mocked out AUTOENV_ENV_FILENAME +# (via .zshenv). [[ $AUTOENV_ENV_FILENAME[0,4] == '/tmp' ]] || return 1 # Inject timeout for `read` while running tests. _AUTOENV_TEST_READ_ARGS='-t 1' + +test_autoenv_add_to_env() { + _dotenv_hash_pair $1 $2 >> $AUTOENV_ENV_FILENAME +} + +# Add enter and leave env files to authentication file. +test_autoenv_auth_env_files() { + echo -n > $AUTOENV_ENV_FILENAME + test_autoenv_add_to_env $PWD/$DOTENV_FILE_ENTER + test_autoenv_add_to_env $PWD/$DOTENV_FILE_LEAVE +} diff --git a/tests/varstash.t b/tests/varstash.t index bc49657850347620803c106a05e6db09178f5d6c..c6d33f064ce7c82a7c34b1e395e69ebcdcf623ca 100644 --- a/tests/varstash.t +++ b/tests/varstash.t @@ -16,8 +16,7 @@ $ echo "autounstash" > $DOTENV_FILE_LEAVE Manually create auth file - $ echo "$PWD/$DOTENV_FILE_ENTER:$(echo $(<$DOTENV_FILE_ENTER) | shasum)" > $AUTOENV_ENV_FILENAME - $ echo "$PWD/$DOTENV_FILE_LEAVE:$(echo $(<$DOTENV_FILE_LEAVE) | shasum)" >> $AUTOENV_ENV_FILENAME + $ test_autoenv_auth_env_files Set environment variable.