From c055ced9228cdbd0677042334bdb3f01e751a545 Mon Sep 17 00:00:00 2001 From: Bruno Sutic Date: Wed, 19 Nov 2014 15:58:04 +0100 Subject: [PATCH] Refactor the tests for travis --- CHANGELOG.md | 1 + run-tests | 18 +++++--------- tests/run-tests-within-vm | 41 +++++++++++++++++++++++++++++++ tests/test_plugin_installation.sh | 2 +- tests/test_plugin_sourcing.sh | 2 +- tests/test_plugin_update.sh | 2 +- 6 files changed, 51 insertions(+), 15 deletions(-) create mode 100755 tests/run-tests-within-vm diff --git a/CHANGELOG.md b/CHANGELOG.md index 890a92c..4933d36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog ### master +- refactor tests so they can be used on travis ### v1.1.0, 2014-11-19 - if the plugin is not downloaded do not source it diff --git a/run-tests b/run-tests index b8b9afd..d31b9a7 100755 --- a/run-tests +++ b/run-tests @@ -2,6 +2,9 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +# running test suite is successful by default +tests_exit_value=0 + run_vagrant() { vagrant up } @@ -14,24 +17,15 @@ stop_vagrant() { fi } -test_files() { - ls -1 ./tests/ | # test files are in `./tests/` dir - grep -i '^test' | # test file names start with 'test' - xargs # file names in one line -} - run_tests() { - local test_file - local test_dir_path="~/tpm/tests/" - for test_file in $(test_files); do - echo "Running test: $test_file" - vagrant ssh -c "${test_dir_path}${test_file}" - done + vagrant ssh -c "cd ~/tpm; ./tests/run-tests-within-vm" + tests_exit_value=$? } main() { run_vagrant run_tests stop_vagrant + exit "$tests_exit_value" } main diff --git a/tests/run-tests-within-vm b/tests/run-tests-within-vm new file mode 100755 index 0000000..224a07c --- /dev/null +++ b/tests/run-tests-within-vm @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +# A test runner file. +# Intended to be run from `./run-tests` script *within* a virtual machine. +# DO NOT run it locally as it might overwrite your `.tmux.conf` (that's what it +# does during the tests). + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# running test suite is successful by default +tests_exit_value=0 + +set_global_exit_val_to_false() { + tests_exit_value=1 +} + +test_files() { + ls -1 "$CURRENT_DIR" | # test files are in the current dir + grep -i '^test' | # test file names start with 'test' + xargs # file names in one line +} + +run_tests() { + local test_file + for test_file in $(test_files); do + echo "Running test: $test_file" + $CURRENT_DIR/$test_file + + # handling exit value + local exit_value="$?" + if [ "$exit_value" != 0 ]; then + set_global_exit_val_to_false + fi + done +} + +main() { + run_tests + exit "$tests_exit_value" +} +main diff --git a/tests/test_plugin_installation.sh b/tests/test_plugin_installation.sh index 545734d..fb9de71 100755 --- a/tests/test_plugin_installation.sh +++ b/tests/test_plugin_installation.sh @@ -7,7 +7,7 @@ source $CURRENT_DIR/helpers.sh test_plugin_installation() { set_tmux_conf_helper <<- HERE set -g @tpm_plugins "tmux-plugins/tmux-example-plugin" - run-shell "~/tpm/tpm" + run-shell "$PWD/tpm" HERE # opens tmux and test it with `expect` diff --git a/tests/test_plugin_sourcing.sh b/tests/test_plugin_sourcing.sh index 08cfed0..cfd6391 100755 --- a/tests/test_plugin_sourcing.sh +++ b/tests/test_plugin_sourcing.sh @@ -12,7 +12,7 @@ check_binding_defined() { test_plugin_sourcing() { set_tmux_conf_helper <<- HERE set -g @tpm_plugins "doesnt_matter/tmux_test_plugin" - run-shell "~/tpm/tpm" + run-shell "$PWD/tpm" HERE # manually creates a local tmux plugin diff --git a/tests/test_plugin_update.sh b/tests/test_plugin_update.sh index c6eba96..ac39292 100755 --- a/tests/test_plugin_update.sh +++ b/tests/test_plugin_update.sh @@ -13,7 +13,7 @@ manually_install_the_plugin() { test_plugin_installation() { set_tmux_conf_helper <<- HERE set -g @tpm_plugins "tmux-plugins/tmux-example-plugin" - run-shell "~/tpm/tpm" + run-shell "$PWD/tpm" HERE manually_install_the_plugin