]> Sergey Matveev's repositories - zsh-autoenv.git/commitdiff
Add tests
authorArash Rouhani <miffoljud@gmail.com>
Sun, 8 Sep 2013 16:32:16 +0000 (18:32 +0200)
committerArash Rouhani <miffoljud@gmail.com>
Sun, 8 Sep 2013 16:32:16 +0000 (18:32 +0200)
.travis.yml [new file with mode: 0644]
Makefile [new file with mode: 0644]
autoenv.zsh
tests/.zshenv [new file with mode: 0644]
tests/autoenv.t [new file with mode: 0644]

diff --git a/.travis.yml b/.travis.yml
new file mode 100644 (file)
index 0000000..b56caf2
--- /dev/null
@@ -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 (file)
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
index 287be05d90075683e08246f01ab76071f452ad62..ff8b4a75f2388cc9bd20231ac2393ba90f635976 100644 (file)
@@ -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 (file)
index 0000000..1c0a9d2
--- /dev/null
@@ -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 (file)
index 0000000..d58f9c9
--- /dev/null
@@ -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)