From 2343e2dd3589622b020d7780e7025e76b30ec5cf Mon Sep 17 00:00:00 2001 From: John D Pell Date: Thu, 27 Jan 2022 10:54:58 -0800 Subject: [PATCH] lib/preexec: tests! --- test/lib/preexec.bats | 164 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 test/lib/preexec.bats diff --git a/test/lib/preexec.bats b/test/lib/preexec.bats new file mode 100644 index 0000000000..d85f952c28 --- /dev/null +++ b/test/lib/preexec.bats @@ -0,0 +1,164 @@ +# shellcheck shell=bats + +load ../test_helper + +function local_setup { + setup_test_fixture + export __bp_enable_subshells=yas +} + +@test "vendor preexec: __bp_install_after_session_init() without existing" { + test_prompt_string="" + export PROMPT_COMMAND="$test_prompt_string" + + load ../../vendor/github.com/rcaloras/bash-preexec/bash-preexec.sh + assert_success + + assert_equal "${PROMPT_COMMAND}" $'__bp_trap_string="$(trap -p DEBUG)"\ntrap - DEBUG\n__bp_install' +} + +@test "vendor preexec: __bp_install_after_session_init() with existing" { + test_prompt_string="nah" + export PROMPT_COMMAND="$test_prompt_string" + + load ../../vendor/github.com/rcaloras/bash-preexec/bash-preexec.sh + assert_success + + assert_equal "${PROMPT_COMMAND}" "$test_prompt_string"$'\n__bp_trap_string="$(trap -p DEBUG)"\ntrap - DEBUG\n__bp_install' +} + +@test "vendor preexec: __bp_install_after_session_init() delayed" { + test_prompt_string="nah" + export PROMPT_COMMAND="$test_prompt_string" + export __bp_delay_install="blarg" + + load ../../vendor/github.com/rcaloras/bash-preexec/bash-preexec.sh + assert_success + + assert_equal "${PROMPT_COMMAND}" "$test_prompt_string" + + run __bp_install_after_session_init + assert_success + + __bp_install_after_session_init + assert_equal "${PROMPT_COMMAND}" "$test_prompt_string"$'\n__bp_trap_string="$(trap -p DEBUG)"\ntrap - DEBUG\n__bp_install' +} + +@test "vendor preexec: __bp_install() without existing" { + test_prompt_string="" + export PROMPT_COMMAND="$test_prompt_string" + + load ../../vendor/github.com/rcaloras/bash-preexec/bash-preexec.sh + assert_success + + run __bp_install + assert_success + + __bp_install + assert_equal "${PROMPT_COMMAND}" $'__bp_precmd_invoke_cmd\n__bp_interactive_mode' +} + +@test "vendor preexec: __bp_install() with existing" { + test_prompt_string="nah" + export PROMPT_COMMAND="$test_prompt_string" + + load ../../vendor/github.com/rcaloras/bash-preexec/bash-preexec.sh + assert_success + + run __bp_install + assert_success + + __bp_install + assert_equal "${PROMPT_COMMAND}" $'__bp_precmd_invoke_cmd\n'"$test_prompt_string"$'\n__bp_interactive_mode' +} + +@test "lib preexec: __bp_require_not_readonly()" { + run type -t __bp_require_not_readonly + assert_failure + + run load ../../lib/preexec.bash + assert_success + load ../../lib/preexec.bash + + run type -t __bp_require_not_readonly + assert_success + + export HISTCONTROL=blah:blah PROMPT_COMMAND="silly;rabbit" + readonly HISTCONTROL PROMPT_COMMAND + + run __bp_require_not_readonly + assert_success +} + +@test "lib preexec: __bp_adjust_histcontrol()" { + run type -t __bp_adjust_histcontrol + assert_failure + + run load ../../lib/preexec.bash + assert_success + load ../../lib/preexec.bash + + run type -t __bp_adjust_histcontrol + assert_success + + test_history_control_string="ignoreall:ignoredups:ignorespace:erasedups" + export HISTCONTROL="${test_history_control_string}" + + run __bp_adjust_histcontrol + assert_success + assert_equal "${HISTCONTROL}" "${test_history_control_string}" +} + +@test "lib preexec: __check_precmd_conflict()" { + test_precmd_function_name="test" + load ../test_helper_libs + + run __check_precmd_conflict "$test_precmd_function_name" + assert_failure + + export precmd_functions=("$test_precmd_function_name") + + run __check_precmd_conflict "$test_precmd_function_name" + assert_success +} + +@test "lib preexec: __check_preexec_conflict()" { + test_preexec_function_name="test" + load ../test_helper_libs + + run __check_preexec_conflict "$test_preexec_function_name" + assert_failure + + export preexec_functions=("$test_preexec_function_name") + + run __check_preexec_conflict "$test_preexec_function_name" + assert_success +} + +@test "lib preexec: safe_append_prompt_command()" { + test_precmd_function_name="test" + load ../test_helper_libs + + export precmd_functions=() + assert_equal "${precmd_functions[*]}" "" + + run safe_append_prompt_command "$test_precmd_function_name" + assert_success + + safe_append_prompt_command "$test_precmd_function_name" + assert_equal "${precmd_functions[*]}" "$test_precmd_function_name" +} + +@test "lib preexec: safe_append_preexec()" { + test_preexec_function_name="test" + load ../test_helper_libs + + export preexec_functions=() + assert_equal "${preexec_functions[*]}" "" + + run safe_append_preexec "$test_preexec_function_name" + assert_success + + safe_append_preexec "$test_preexec_function_name" + assert_equal "${preexec_functions[*]}" "$test_preexec_function_name" +}