diff --git a/lib/helpers.bash b/lib/helpers.bash index bd284dd8..c08403d8 100644 --- a/lib/helpers.bash +++ b/lib/helpers.bash @@ -18,21 +18,6 @@ function _load_bash_it_files() { fi done fi - - # In the new structure - if [ -d "${BASH_IT}/enabled" ] - then - declare suffix - suffix=$(echo "$subdirectory" | sed -e 's/plugins/plugin/g') - - FILES="${BASH_IT}/enabled/*.${suffix}.bash" - for config_file in $FILES - do - if [ -e "${config_file}" ]; then - source $config_file - fi - done - fi } # Function for reloading aliases diff --git a/test/bash_it/bash_it.bats b/test/bash_it/bash_it.bats index 3fc5e808..92dda192 100644 --- a/test/bash_it/bash_it.bats +++ b/test/bash_it/bash_it.bats @@ -15,6 +15,9 @@ function local_setup { rm -rf "$BASH_IT"/completion/enabled rm -rf "$BASH_IT"/plugins/enabled + cp -r "$BASH_IT/test/fixtures/bash_it/aliases" "$BASH_IT" + cp -r "$BASH_IT/test/fixtures/bash_it/plugins" "$BASH_IT" + # Don't pollute the user's actual $HOME directory # Use a test home directory instead export BASH_IT_TEST_CURRENT_HOME="${HOME}" @@ -31,6 +34,109 @@ function local_teardown { assert_equal "${BASH_IT_TEST_CURRENT_HOME}" "${HOME}" } +@test "bash-it: verify that the test fixture is available" { + assert [ -e "$BASH_IT/aliases/available/a.aliases.bash" ] + assert [ -e "$BASH_IT/aliases/available/b.aliases.bash" ] +} + +@test "bash-it: load aliases in order" { + mkdir -p $BASH_IT/aliases/enabled + mkdir -p $BASH_IT/plugins/enabled + + 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" ] + + ln -s $BASH_IT/aliases/available/a.aliases.bash $BASH_IT/aliases/enabled/150---a.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/150---a.aliases.bash" ] + ln -s $BASH_IT/aliases/available/b.aliases.bash $BASH_IT/aliases/enabled/150---b.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/150---b.aliases.bash" ] + + # The `test_alias` alias should not exist + run alias test_alias &> /dev/null + assert_failure + + load "$BASH_IT/bash_it.sh" + + run alias test_alias &> /dev/null + assert_success + assert_line "0" "alias test_alias='b'" +} + +@test "bash-it: load aliases in priority order" { + mkdir -p $BASH_IT/aliases/enabled + mkdir -p $BASH_IT/plugins/enabled + + 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" ] + + ln -s $BASH_IT/aliases/available/a.aliases.bash $BASH_IT/aliases/enabled/175---a.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/175---a.aliases.bash" ] + ln -s $BASH_IT/aliases/available/b.aliases.bash $BASH_IT/aliases/enabled/150---b.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/150---b.aliases.bash" ] + + # The `test_alias` alias should not exist + run alias test_alias &> /dev/null + assert_failure + + load "$BASH_IT/bash_it.sh" + + run alias test_alias &> /dev/null + assert_success + assert_line "0" "alias test_alias='a'" +} + +@test "bash-it: load aliases and plugins in priority order" { + mkdir -p $BASH_IT/aliases/enabled + mkdir -p $BASH_IT/plugins/enabled + + 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" ] + + ln -s $BASH_IT/aliases/available/a.aliases.bash $BASH_IT/aliases/enabled/150---a.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/150---a.aliases.bash" ] + ln -s $BASH_IT/aliases/available/b.aliases.bash $BASH_IT/aliases/enabled/150---b.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/150---b.aliases.bash" ] + ln -s $BASH_IT/plugins/available/c.plugin.bash $BASH_IT/plugins/enabled/250---c.plugin.bash + assert [ -L "$BASH_IT/plugins/enabled/250---c.plugin.bash" ] + + # The `test_alias` alias should not exist + run alias test_alias &> /dev/null + assert_failure + + load "$BASH_IT/bash_it.sh" + + run alias test_alias &> /dev/null + assert_success + assert_line "0" "alias test_alias='c'" +} + +@test "bash-it: load aliases and plugins in priority order, with one alias higher than plugins" { + mkdir -p $BASH_IT/aliases/enabled + mkdir -p $BASH_IT/plugins/enabled + + 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" ] + + ln -s $BASH_IT/aliases/available/a.aliases.bash $BASH_IT/aliases/enabled/350---a.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/350---a.aliases.bash" ] + ln -s $BASH_IT/aliases/available/b.aliases.bash $BASH_IT/aliases/enabled/150---b.aliases.bash + assert [ -L "$BASH_IT/aliases/enabled/150---b.aliases.bash" ] + ln -s $BASH_IT/plugins/available/c.plugin.bash $BASH_IT/plugins/enabled/250---c.plugin.bash + assert [ -L "$BASH_IT/plugins/enabled/250---c.plugin.bash" ] + + # The `test_alias` alias should not exist + run alias test_alias &> /dev/null + assert_failure + + load "$BASH_IT/bash_it.sh" + + run alias test_alias &> /dev/null + assert_success + # This will be c, loaded from the c plugin, since the individual directories + # are loaded one by one. + assert_line "0" "alias test_alias='c'" +} + @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 diff --git a/test/fixtures/bash_it/aliases/available/a.aliases.bash b/test/fixtures/bash_it/aliases/available/a.aliases.bash new file mode 100644 index 00000000..9dede3f6 --- /dev/null +++ b/test/fixtures/bash_it/aliases/available/a.aliases.bash @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +alias test_alias="a" diff --git a/test/fixtures/bash_it/aliases/available/b.aliases.bash b/test/fixtures/bash_it/aliases/available/b.aliases.bash new file mode 100644 index 00000000..4f90a7ad --- /dev/null +++ b/test/fixtures/bash_it/aliases/available/b.aliases.bash @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +alias test_alias="b" diff --git a/test/fixtures/bash_it/plugins/available/c.plugin.bash b/test/fixtures/bash_it/plugins/available/c.plugin.bash new file mode 100644 index 00000000..3d17ad7a --- /dev/null +++ b/test/fixtures/bash_it/plugins/available/c.plugin.bash @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +alias test_alias="c"