From 6981fa091d4b979e2a1ca8457e61f459779008bf Mon Sep 17 00:00:00 2001 From: Nils Winkler Date: Fri, 15 Sep 2017 08:10:15 +0200 Subject: [PATCH] Add tests for bash_it.sh script --- bash_it.sh | 1 - test/bash_it/bash_it.bats | 85 +++++++++++++++++++++++++++++++++++++++ test/run | 2 +- 3 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 test/bash_it/bash_it.bats diff --git a/bash_it.sh b/bash_it.sh index 599e0aaf..fbb37f62 100755 --- a/bash_it.sh +++ b/bash_it.sh @@ -47,7 +47,6 @@ done # TODO Automatically check for content that needs to be migrated # Load enabled aliases, completion, plugins -# TODO Add new global directory structure for file_type in "aliases" "plugins" "completion" do _load_bash_it_files $file_type diff --git a/test/bash_it/bash_it.bats b/test/bash_it/bash_it.bats new file mode 100644 index 00000000..3fc5e808 --- /dev/null +++ b/test/bash_it/bash_it.bats @@ -0,0 +1,85 @@ +#!/usr/bin/env bats + +load ../test_helper +load ../../lib/composure + +function local_setup { + mkdir -p "$BASH_IT" + lib_directory="$(cd "$(dirname "$0")" && pwd)" + # Use rsync to copy Bash-it to the temp folder + # rsync is faster than cp, since we can exclude the large ".git" folder + rsync -qavrKL -d --delete-excluded --exclude=.git $lib_directory/../.. "$BASH_IT" + + rm -rf "$BASH_IT"/enabled + rm -rf "$BASH_IT"/aliases/enabled + rm -rf "$BASH_IT"/completion/enabled + rm -rf "$BASH_IT"/plugins/enabled + + # Don't pollute the user's actual $HOME directory + # Use a test home directory instead + export BASH_IT_TEST_CURRENT_HOME="${HOME}" + export BASH_IT_TEST_HOME="$(cd "${BASH_IT}/.." && pwd)/BASH_IT_TEST_HOME" + mkdir -p "${BASH_IT_TEST_HOME}" + export HOME="${BASH_IT_TEST_HOME}" +} + +function local_teardown { + export HOME="${BASH_IT_TEST_CURRENT_HOME}" + + rm -rf "${BASH_IT_TEST_HOME}" + + assert_equal "${BASH_IT_TEST_CURRENT_HOME}" "${HOME}" +} + +@test "bash-it: load enabled aliases from new structure, priority-based" { + mkdir -p $BASH_IT/enabled + ln -s $BASH_IT/aliases/available/atom.aliases.bash $BASH_IT/enabled/150---atom.aliases.bash + assert [ -L "$BASH_IT/enabled/150---atom.aliases.bash" ] + ln -s $BASH_IT/plugins/available/base.plugin.bash $BASH_IT/enabled/250---base.plugin.bash + assert [ -L "$BASH_IT/enabled/250---base.plugin.bash" ] + + # The `ah` alias should not exist + run alias ah &> /dev/null + assert_failure + + load "$BASH_IT/bash_it.sh" + + run alias ah &> /dev/null + assert_success +} + +@test "bash-it: load enabled aliases from old structure, priority-based" { + mkdir -p $BASH_IT/aliases/enabled + mkdir -p $BASH_IT/plugins/enabled + ln -s $BASH_IT/aliases/available/atom.aliases.bash $BASH_IT/aliases/enabled/150---atom.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/150---atom.aliases.bash" ] + ln -s $BASH_IT/plugins/available/base.plugin.bash $BASH_IT/plugins/enabled/250---base.plugin.bash + assert [ -L "$BASH_IT/plugins/enabled/250---base.plugin.bash" ] + + # The `ah` alias should not exist + run alias ah &> /dev/null + assert_failure + + load "$BASH_IT/bash_it.sh" + + run alias ah &> /dev/null + assert_success +} + +@test "bash-it: load enabled aliases from old structure, without priorities" { + mkdir -p $BASH_IT/aliases/enabled + mkdir -p $BASH_IT/plugins/enabled + ln -s $BASH_IT/aliases/available/atom.aliases.bash $BASH_IT/aliases/enabled/atom.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/atom.aliases.bash" ] + ln -s $BASH_IT/plugins/available/base.plugin.bash $BASH_IT/plugins/enabled/base.plugin.bash + assert [ -L "$BASH_IT/plugins/enabled/base.plugin.bash" ] + + # The `ah` alias should not exist + run alias ah &> /dev/null + assert_failure + + load "$BASH_IT/bash_it.sh" + + run alias ah &> /dev/null + assert_success +} diff --git a/test/run b/test/run index 389a20ae..72d8db4a 100755 --- a/test/run +++ b/test/run @@ -11,4 +11,4 @@ fi # TODO Add tests for bash-it completion -exec $bats_executable ${CI:+--tap} ${test_directory}/{install,lib,plugins,themes} +exec $bats_executable ${CI:+--tap} ${test_directory}/{bash_it,install,lib,plugins,themes}