Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions completion/available/herdr.completion.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# shellcheck shell=bash
about-completion "Herdr Terminal Multiplexer tab completion"

if ! _binary_exists herdr; then
_log_error "herdr not found in PATH — completion not loaded. (${BASH_SOURCE[0]})"
return 1
else
if ! _bash-it-completion-helper-sufficient herdr; then
_log_warning "The completion is set for 'herdr' externally. Activation will be skipped. (${BASH_SOURCE[0]})"
else
eval "$(herdr completion bash)"
fi
fi
13 changes: 13 additions & 0 deletions completion/available/op.completion.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# shellcheck shell=bash
about-completion "1Password CLI tab completion"

if ! _binary_exists op; then
_log_error "op not found in PATH — completion not loaded. (${BASH_SOURCE[0]})"
return 1
else
if ! _bash-it-completion-helper-sufficient op; then
_log_warning "The completion is set for 'op' externally. Activation will be skipped. (${BASH_SOURCE[0]})"
else
eval "$(op completion bash)"
fi
fi
47 changes: 47 additions & 0 deletions test/completion/herdr.completion.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# shellcheck shell=bats

load "${MAIN_BASH_IT_DIR?}/test/test_helper.bash"

function local_setup_file() {
setup_libs "helpers"
load "${BASH_IT?}/lib/completion.bash"
}

function local_setup() {
MOCK_BIN="${BATS_TEST_TMPDIR}/mock-bin"
mkdir -p "${MOCK_BIN}"
_SAVED_PATH="${PATH}"
}

function local_teardown() {
PATH="${_SAVED_PATH}"
complete -r herdr 2> /dev/null || true
}

function _mock_herdr() {
printf '%s\n' \
'#!/usr/bin/env bash' \
'[[ "$*" == "completion bash" ]] && echo "complete -o nospace herdr"' \
> "${MOCK_BIN}/herdr"
chmod +x "${MOCK_BIN}/herdr"
PATH="${MOCK_BIN}:${PATH}"
}

@test "completion herdr: fails to load when herdr is not in PATH" {
PATH="${MOCK_BIN}" run source "${BASH_IT?}/completion/available/herdr.completion.bash"
assert_failure
}

@test "completion herdr: loads successfully when herdr is available" {
_mock_herdr
run source "${BASH_IT?}/completion/available/herdr.completion.bash"
assert_success
}

@test "completion herdr: skips eval when completion is already managed externally" {
_mock_herdr
complete -F : herdr
source "${BASH_IT?}/completion/available/herdr.completion.bash"
run complete -p herdr
assert_output "complete -F : herdr"
}
47 changes: 47 additions & 0 deletions test/completion/op.completion.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# shellcheck shell=bats

load "${MAIN_BASH_IT_DIR?}/test/test_helper.bash"

function local_setup_file() {
setup_libs "helpers"
load "${BASH_IT?}/lib/completion.bash"
}

function local_setup() {
MOCK_BIN="${BATS_TEST_TMPDIR}/mock-bin"
mkdir -p "${MOCK_BIN}"
_SAVED_PATH="${PATH}"
}

function local_teardown() {
PATH="${_SAVED_PATH}"
complete -r op 2> /dev/null || true
}

function _mock_op() {
printf '%s\n' \
'#!/usr/bin/env bash' \
'[[ "$*" == "completion bash" ]] && echo "complete -o nospace op"' \
> "${MOCK_BIN}/op"
chmod +x "${MOCK_BIN}/op"
PATH="${MOCK_BIN}:${PATH}"
}

@test "completion op: fails to load when op is not in PATH" {
PATH="${MOCK_BIN}" run source "${BASH_IT?}/completion/available/op.completion.bash"
assert_failure
}

@test "completion op: loads successfully when op is available" {
_mock_op
run source "${BASH_IT?}/completion/available/op.completion.bash"
assert_success
}

@test "completion op: skips eval when completion is already managed externally" {
_mock_op
complete -F : op
source "${BASH_IT?}/completion/available/op.completion.bash"
run complete -p op
assert_output "complete -F : op"
}
Loading