diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..b56caf2 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,7 @@ +language: python +python: + - "3.3" +before_script: + - "sudo apt-get install zsh" +install: "sudo pip install cram" +script: "make tests" diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bed40b1 --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +.PHONY: itests tests + +itests: + ZDOTDIR="${PWD}/tests" cram -i --shell=zsh tests + +tests: + ZDOTDIR="${PWD}/tests" cram --shell=zsh tests diff --git a/autoenv.zsh b/autoenv.zsh index 287be05..ff8b4a7 100644 --- a/autoenv.zsh +++ b/autoenv.zsh @@ -39,6 +39,11 @@ _dotenv_print_unauthorized_message() { echo "Would you like to authorize it? (y/n)" } +# This function can be mocked in tests +_dotenv_read_answer() { + read answer +} + _dotenv_source_env() { local env_file="$PWD/.env" @@ -52,7 +57,7 @@ _dotenv_source_env() { _dotenv_print_unauthorized_message $env_file - read answer + _dotenv_read_answer if [[ $answer == 'y' ]] then diff --git a/tests/.zshenv b/tests/.zshenv new file mode 100644 index 0000000..1c0a9d2 --- /dev/null +++ b/tests/.zshenv @@ -0,0 +1,4 @@ +test -f "$TESTDIR/.zcompdump" && rm "$TESTDIR/.zcompdump" + +source "$TESTDIR/../autoenv.plugin.zsh" +export ENV_AUTHORIZATION_FILE="$PWD/.env_auth" diff --git a/tests/autoenv.t b/tests/autoenv.t new file mode 100644 index 0000000..d58f9c9 --- /dev/null +++ b/tests/autoenv.t @@ -0,0 +1,77 @@ +Ensure we have our mocked out ENV_AUTHORIZATION_FILE + + $ [[ $ENV_AUTHORIZATION_FILE[0,4] == '/tmp' ]] || return 1 + +Lets set a simple .env action + + $ echo 'echo blah' >> .env + +Manually create auth file + + $ echo "$PWD/.env:$(echo echo blah | shasum)" > $ENV_AUTHORIZATION_FILE + $ cd . + blah + +Now try to make it accept it + + $ rm $ENV_AUTHORIZATION_FILE + $ _dotenv_read_answer() { answer='y' } + $ cd . + Attempting to load unauthorized env: /tmp/cramtests-??????/autoenv.t/.env (glob) + + ********************************************** + + echo blah + + ********************************************** + + Would you like to authorize it? (y/n) + blah + +The last "blah" is because it executed the command + +Now lets see that it actually checks the shasum value + + $ cd . + blah + $ rm $ENV_AUTHORIZATION_FILE + $ echo "$PWD/.env:$(echo mischief | shasum)" > $ENV_AUTHORIZATION_FILE + $ cd . + Attempting to load unauthorized env: /tmp/cramtests-??????/autoenv.t/.env (glob) + + ********************************************** + + echo blah + + ********************************************** + + Would you like to authorize it? (y/n) + blah + +Now, will it take no for an answer? + + $ rm $ENV_AUTHORIZATION_FILE + $ _dotenv_read_answer() { answer='n' } + $ cd . + Attempting to load unauthorized env: /tmp/cramtests-??????/autoenv.t/.env (glob) + + ********************************************** + + echo blah + + ********************************************** + + Would you like to authorize it? (y/n) + +Lets also try one more time to ensure it didnt add it + + $ cd . + Attempting to load unauthorized env: /tmp/cramtests-??????/autoenv.t/.env (glob) + + ********************************************** + + echo blah + + ********************************************** + + Would you like to authorize it? (y/n)