diff --git a/.gitignore b/.gitignore index 9639d42..a977916 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ .vagrant/ -base-image/ -util-linux/ diff --git a/run-tests b/run-tests deleted file mode 100755 index 5519d9d..0000000 --- a/run-tests +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash -exit_code=0 -for t in test/test_*; do - bash "$t" - if [[ $? == 0 ]]; then - echo "PASSED: $t" - else - echo "FAILED: $t" - exit_code=1 - fi -done -exit "$exit_code" diff --git a/test b/test new file mode 100755 index 0000000..b6d3cbd --- /dev/null +++ b/test @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +exit_code=0 +for t in tests/test_*; do + bash tests/teardown > /dev/null 2>&1 + bash "$t" > /dev/null 2>&1 + if [[ $? == 0 ]]; then + echo -e "\e[1;32mPASSED\e[0m : $t" + else + echo -e "\e[1;31mFAILED\e[0m : $t" + exit_code=1 + fi + bash tests/teardown > /dev/null 2>&1 +done +exit "$exit_code" diff --git a/test/test_length b/test/test_length deleted file mode 100644 index 478be3e..0000000 --- a/test/test_length +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -[ "$(wc -l < bocker)" -le 100 ] diff --git a/tests/teardown b/tests/teardown new file mode 100644 index 0000000..7667107 --- /dev/null +++ b/tests/teardown @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -o errexit -o nounset -o pipefail + +for img in $(./bocker images | grep 'img'); do + ./bocker rm "$img" +done + +for ps in $(./bocker ps | grep 'ps' | awk '{print $1}'); do + ./bocker rm "$ps" +done diff --git a/tests/test_commit b/tests/test_commit new file mode 100644 index 0000000..507dfc5 --- /dev/null +++ b/tests/test_commit @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -o errexit -o nounset -o pipefail + +img="$(./bocker init ~/base-image | awk '{print $2}')" +./bocker images | grep -qw "$img" +[[ "$?" == 0 ]] + +./bocker run "$img" which wget +ps="$(./bocker ps | grep 'which wget' | awk '{print $1}')" +logs="$(./bocker logs "$ps")" +./bocker rm "$ps" +[[ "$logs" == "which: no wget in"* ]] + +./bocker run "$img" yum install -y wget +ps="$(./bocker ps | grep 'yum install -y wget' | awk '{print $1}')" +./bocker commit "$ps" "$img" + +./bocker run "$img" which wget +ps="$(./bocker ps | grep 'which wget' | awk '{print $1}')" +logs="$(./bocker logs "$ps")" +[[ "$logs" == '/usr/bin/wget' ]] diff --git a/tests/test_images b/tests/test_images new file mode 100644 index 0000000..af17b22 --- /dev/null +++ b/tests/test_images @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -o errexit -o nounset -o pipefail + +[[ "$(./bocker images | head -n 1)" == 'IMAGE_ID' ]] diff --git a/tests/test_init b/tests/test_init new file mode 100644 index 0000000..6ff70f8 --- /dev/null +++ b/tests/test_init @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -o errexit -o nounset -o pipefail + +[[ "$(./bocker init ~/base-image)" == 'Created: img_'* ]] diff --git a/tests/test_length b/tests/test_length new file mode 100644 index 0000000..ca98d0c --- /dev/null +++ b/tests/test_length @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -o errexit -o nounset -o pipefail + +[[ "$(wc -l < bocker)" -le 100 ]]; echo $? +[[ "$(wc -L < bocker)" -le 80 ]]; echo $? diff --git a/tests/test_ps b/tests/test_ps new file mode 100644 index 0000000..88b0ccf --- /dev/null +++ b/tests/test_ps @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -o errexit -o nounset -o pipefail + +[[ "$(./bocker ps | head -n 1)" == 'CONTAINER_ID COMMAND' ]] diff --git a/tests/test_rm b/tests/test_rm new file mode 100644 index 0000000..2224828 --- /dev/null +++ b/tests/test_rm @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -o errexit -o nounset -o pipefail + +img="$(./bocker init ~/base-image | awk '{print $2}')" +cmd="echo $RANDOM" +./bocker run "$img" "$cmd" +ps="$(./bocker ps | grep "$cmd" | awk '{print $1}')" + +[[ "$(./bocker images | grep -c "$img")" == 1 ]] +[[ "$(./bocker ps | grep -c "$cmd")" == 1 ]] + +./bocker rm "$img" +./bocker rm "$ps" + +[[ "$(./bocker images | grep -c "$img")" == 0 ]] +[[ "$(./bocker ps | grep -c "$cmd")" == 0 ]] diff --git a/tests/test_run b/tests/test_run new file mode 100644 index 0000000..ea68fd3 --- /dev/null +++ b/tests/test_run @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -o errexit -o nounset -o pipefail + +function bocker_run_test() { +./bocker run "$1" "$2" > /dev/null +ps="$(./bocker ps | grep "$2" | awk '{print $1}')" +logs="$(./bocker logs "$ps")" +if [[ "$logs" == *"$3"* ]]; then + echo 0 +else + echo 1 +fi +} + +img="$(./bocker init ~/base-image | awk '{print $2}')" +./bocker images | grep -qw "$img" +[[ "$?" == 0 ]] + +[[ "$(bocker_run_test "$img" 'echo foo' 'foo')" == 0 ]] +[[ "$(bocker_run_test "$img" 'uname' 'Linux')" == 0 ]] +[[ "$(bocker_run_test "$img" 'cat /proc/self/stat' '3 (cat)')" == 0 ]] +[[ "$(bocker_run_test "$img" 'ip addr' 'veth1_ps_')" == 0 ]] +[[ "$(bocker_run_test "$img" 'ping -c 1 8.8.8.8' '0% packet loss')" == 0 ]] +[[ "$(bocker_run_test "$img" 'ping -c 1 google.com' '0% packet loss')" == 0 ]]