From 830feaae693c3be49b4ce42677d45e16987e7022 Mon Sep 17 00:00:00 2001 From: Bruno Sutic Date: Sat, 1 Aug 2015 22:12:07 +0200 Subject: [PATCH] Switch to using `tmux-test` framework --- .gitignore | 3 + .gitmodules | 3 + .travis.yml | 11 ++-- CHANGELOG.md | 2 + README.md | 2 +- Vagrantfile | 10 ---- lib/tmux-test | 1 + run-tests | 31 ---------- tests/helpers.sh | 73 ------------------------ tests/helpers/tpm.sh | 18 ++++++ tests/run-tests-within-vm | 41 ------------- tests/test_plugin_clean.sh | 3 +- tests/test_plugin_installation.sh | 3 +- tests/test_plugin_installation_legacy.sh | 3 +- tests/test_plugin_sourcing.sh | 14 ++++- tests/test_plugin_update.sh | 3 +- vagrant_provisioning.sh | 9 --- 17 files changed, 55 insertions(+), 175 deletions(-) create mode 100644 .gitmodules delete mode 100644 Vagrantfile create mode 160000 lib/tmux-test delete mode 100755 run-tests delete mode 100644 tests/helpers.sh create mode 100644 tests/helpers/tpm.sh delete mode 100755 tests/run-tests-within-vm delete mode 100644 vagrant_provisioning.sh diff --git a/.gitignore b/.gitignore index 7481ead..8a94156 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ **/.vagrant/ +run_tests +tests/run_tests_in_isolation +tests/helpers/helpers.sh diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..5e44e3c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/tmux-test"] + path = lib/tmux-test + url = https://github.com/tmux-plugins/tmux-test.git diff --git a/.travis.yml b/.travis.yml index 481ad45..b6d9fad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,14 @@ -# generic packages +# generic packages and latest Tmux 1.9a before_install: - sudo apt-get update - sudo apt-get install -y git-core expect - sudo apt-get install -y python-software-properties software-properties-common - -# install latest Tmux 1.9a -install: - sudo add-apt-repository -y ppa:pi-rho/dev - sudo apt-get update - sudo apt-get install -y tmux=1.9a-1~ppa1~p -script: ./tests/run-tests-within-vm +install: + - git clone https://github.com/tmux-plugins/tmux-test lib/tmux-test + - lib/tmux-test/setup + +script: ./tests/run_tests_in_isolation diff --git a/CHANGELOG.md b/CHANGELOG.md index ba4c489..0791c05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ - move all instructions to `docs/` dir - add `bin/install_plugins` cli executable script - improved test runner function +- switch to using [tmux-test](https://github.com/tmux-plugins/tmux-test) + framework ### v2.0.0, 2015-07-07 - enable overriding default key bindings diff --git a/README.md b/README.md index 1c3d950..d7334b0 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ When run locally, [vagrant](https://www.vagrantup.com/) is required. Run tests with: # within project directory - $ ./run-tests + $ ./run_tests ### Other goodies diff --git a/Vagrantfile b/Vagrantfile deleted file mode 100644 index 0ee81aa..0000000 --- a/Vagrantfile +++ /dev/null @@ -1,10 +0,0 @@ -VAGRANTFILE_API_VERSION = '2' - -Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| - config.vm.box = 'precise32' - config.vm.box_url = 'http://files.vagrantup.com/precise32.box' - - config.vm.synced_folder './', '/home/vagrant/tpm' - - config.vm.provision 'shell', path: 'vagrant_provisioning.sh' -end diff --git a/lib/tmux-test b/lib/tmux-test new file mode 160000 index 0000000..672b2c3 --- /dev/null +++ b/lib/tmux-test @@ -0,0 +1 @@ +Subproject commit 672b2c3883df2f99acb27b3c302d4b773e62aa28 diff --git a/run-tests b/run-tests deleted file mode 100755 index d31b9a7..0000000 --- a/run-tests +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash - -CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -# running test suite is successful by default -tests_exit_value=0 - -run_vagrant() { - vagrant up -} - -# Halt vagrant after tests are done running, unless KEEP_RUNNING environment -# variable is set to 'true'. -stop_vagrant() { - if [ -z "$KEEP_RUNNING" ]; then - vagrant halt - fi -} - -run_tests() { - 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/helpers.sh b/tests/helpers.sh deleted file mode 100644 index 3bc0cfa..0000000 --- a/tests/helpers.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env bash - -FAIL="false" - -set_tmux_conf_helper() { - > ~/.tmux.conf # empty filename - while read line; do - echo "$line" >> ~/.tmux.conf - done -} - -create_test_plugin_helper() { - local plugin_path="$HOME/.tmux/plugins/tmux_test_plugin/" - rm -rf $plugin_path - mkdir -p $plugin_path - - while read -r line; do - echo $line >> "$plugin_path/test_plugin.tmux" - done - chmod +x "$plugin_path/test_plugin.tmux" -} - -teardown_helper() { - rm ~/.tmux.conf - rm -rf ~/.tmux/ - tmux kill-server >/dev/null 2>&1 -} - -check_dir_exists_helper() { - local dir_path=$1 - if [ -d "$dir_path" ]; then - return 0 - else - return 1 - fi -} - -# runs the scripts and asserts it has the correct output and exit code -script_run_helper() { - local script="$1" - local expected_output="$2" - local expected_exit_code="${3:-0}" - "$script" | - grep "$expected_output" >/dev/null 2>&1 && # grep -q flag quits the script early - [ "${PIPESTATUS[0]}" -eq "$expected_exit_code" ] -} - -fail_helper() { - local message="$1" - echo "$message" >&2 - FAIL="true" -} - -exit_value_helper() { - local fail="$1" - if [ "$FAIL" == "true" ]; then - echo "FAIL!" - echo - exit 1 - else - echo "SUCCESS" - echo - exit 0 - fi -} - -run_tests() { - # get all the functions starting with 'test_' and invoke them - for test in $(compgen -A function | grep "^test_"); do - "$test" - done - exit_value_helper -} diff --git a/tests/helpers/tpm.sh b/tests/helpers/tpm.sh new file mode 100644 index 0000000..9de1d95 --- /dev/null +++ b/tests/helpers/tpm.sh @@ -0,0 +1,18 @@ +check_dir_exists_helper() { + local dir_path=$1 + if [ -d "$dir_path" ]; then + return 0 + else + return 1 + fi +} + +# runs the scripts and asserts it has the correct output and exit code +script_run_helper() { + local script="$1" + local expected_output="$2" + local expected_exit_code="${3:-0}" + "$script" | + grep "$expected_output" >/dev/null 2>&1 && # grep -q flag quits the script early + [ "${PIPESTATUS[0]}" -eq "$expected_exit_code" ] +} diff --git a/tests/run-tests-within-vm b/tests/run-tests-within-vm deleted file mode 100755 index d2a5755..0000000 --- a/tests/run-tests-within-vm +++ /dev/null @@ -1,41 +0,0 @@ -#!/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_clean.sh b/tests/test_plugin_clean.sh index af6c660..839f347 100755 --- a/tests/test_plugin_clean.sh +++ b/tests/test_plugin_clean.sh @@ -4,7 +4,8 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" TPM_DIR="$PWD" PLUGINS_DIR="$HOME/.tmux/plugins" -source "$CURRENT_DIR/helpers.sh" +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" manually_install_the_plugin() { rm -rf "$PLUGINS_DIR" diff --git a/tests/test_plugin_installation.sh b/tests/test_plugin_installation.sh index 2aaf1fa..ec8cb73 100755 --- a/tests/test_plugin_installation.sh +++ b/tests/test_plugin_installation.sh @@ -6,7 +6,8 @@ TPM_DIR="$PWD" CUSTOM_PLUGINS_DIR="$HOME/foo/plugins" -source "$CURRENT_DIR/helpers.sh" +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" # TMUX KEY-BINDING TESTS diff --git a/tests/test_plugin_installation_legacy.sh b/tests/test_plugin_installation_legacy.sh index f14725f..66d0e93 100755 --- a/tests/test_plugin_installation_legacy.sh +++ b/tests/test_plugin_installation_legacy.sh @@ -4,7 +4,8 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" PLUGINS_DIR="$HOME/.tmux/plugins" TPM_DIR="$PWD" -source "$CURRENT_DIR/helpers.sh" +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" # TMUX KEY-BINDING TESTS diff --git a/tests/test_plugin_sourcing.sh b/tests/test_plugin_sourcing.sh index b77c07f..27bef8e 100755 --- a/tests/test_plugin_sourcing.sh +++ b/tests/test_plugin_sourcing.sh @@ -3,13 +3,25 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" TPM_DIR="$PWD" -source "$CURRENT_DIR/helpers.sh" +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" check_binding_defined() { local binding="$1" tmux list-keys | grep -q "$binding" } +create_test_plugin_helper() { + local plugin_path="$HOME/.tmux/plugins/tmux_test_plugin/" + rm -rf $plugin_path + mkdir -p $plugin_path + + while read -r line; do + echo $line >> "$plugin_path/test_plugin.tmux" + done + chmod +x "$plugin_path/test_plugin.tmux" +} + test_plugin_sourcing() { set_tmux_conf_helper <<- HERE set -g @plugin "doesnt_matter/tmux_test_plugin" diff --git a/tests/test_plugin_update.sh b/tests/test_plugin_update.sh index b70fca8..ac3d67a 100755 --- a/tests/test_plugin_update.sh +++ b/tests/test_plugin_update.sh @@ -4,7 +4,8 @@ CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" TPM_DIR="$PWD" PLUGINS_DIR="$HOME/.tmux/plugins" -source "$CURRENT_DIR/helpers.sh" +source "$CURRENT_DIR/helpers/helpers.sh" +source "$CURRENT_DIR/helpers/tpm.sh" manually_install_the_plugin() { mkdir -p "$PLUGINS_DIR" diff --git a/vagrant_provisioning.sh b/vagrant_provisioning.sh deleted file mode 100644 index aff44a9..0000000 --- a/vagrant_provisioning.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -sudo apt-get update -sudo apt-get install -y git-core expect python-software-properties software-properties-common - -# install latest Tmux 1.9a -sudo add-apt-repository -y ppa:pi-rho/dev -sudo apt-get update -sudo apt-get install -y tmux=1.9a-1~ppa1~p