Skip to content

Commit

Permalink
Merge pull request #2072 from gaelicWizard/lib/preexec
Browse files Browse the repository at this point in the history
lib/preexec: tests!
  • Loading branch information
NoahGorny committed Jan 27, 2022
2 parents 0c24eda + 2343e2d commit 7e79212
Show file tree
Hide file tree
Showing 3 changed files with 172 additions and 3 deletions.
7 changes: 6 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ trim_trailing_whitespace = false
indent_size = tab
indent_style = tab

[{**.*sh,test/run}]
[{**.*sh,test/run,**.bats}]
indent_size = tab
indent_style = tab

Expand All @@ -29,3 +29,8 @@ end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[**.bats]
indent_size = tab
indent_style = tab
shell_variant = bats
4 changes: 2 additions & 2 deletions lib/preexec.bash
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ __bp_install_after_session_init
function __check_precmd_conflict() {
local f
__bp_trim_whitespace f "${1?}"
! _bash-it-array-contains-element "${f}" "${precmd_functions[@]}"
_bash-it-array-contains-element "${f}" "${precmd_functions[@]}"
}

function __check_preexec_conflict() {
local f
__bp_trim_whitespace f "${1?}"
! _bash-it-array-contains-element "${f}" "${preexec_functions[@]}"
_bash-it-array-contains-element "${f}" "${preexec_functions[@]}"
}

function safe_append_prompt_command {
Expand Down
164 changes: 164 additions & 0 deletions test/lib/preexec.bats
Original file line number Diff line number Diff line change
@@ -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"
}

0 comments on commit 7e79212

Please sign in to comment.