Files
nvm/test/fast/Unit tests/nvm_has_italics
T

81 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
WORK="${PWD}/nvm-has-italics-work.$$"
FAKE_BIN="${WORK}/bin"
TPUT_LOG="${WORK}/tput.log"
cleanup() {
command rm -rf "${WORK}"
unset -f cleanup die nvm_has_colors
}
die () { echo "$@" ; cleanup ; exit 1; }
: nvm.sh
\. ../../../nvm.sh
nvm_has_colors() { return 0; }
command mkdir -p "${FAKE_BIN}"
command cat > "${FAKE_BIN}/tput" <<EOF
#!/bin/sh
echo "\$*" > "${TPUT_LOG}"
command printf '\033[3m'
exit "\${FAKE_TPUT_STATUS-0}"
EOF
command chmod +x "${FAKE_BIN}/tput"
(
export PATH="${FAKE_BIN}:${PATH}" TERM=xterm-256color
nvm_has_italics
) || die 'nvm_has_italics should be true when terminfo has the sitm capability'
[ "$(command cat "${TPUT_LOG}")" = '-T xterm-256color sitm' ] \
|| die "nvm_has_italics should query sitm for the current TERM; got >$(command cat "${TPUT_LOG}")<"
OUTPUT="$(
export PATH="${FAKE_BIN}:${PATH}" TERM=xterm-256color
nvm_has_italics
)"
[ -z "${OUTPUT}" ] \
|| die "nvm_has_italics should not print the escape sequence; got >${OUTPUT}<"
(
export PATH="${FAKE_BIN}:${PATH}" TERM=screen FAKE_TPUT_STATUS=1
! nvm_has_italics
) || die 'nvm_has_italics should be false when terminfo lacks the sitm capability'
(
export PATH="${FAKE_BIN}:${PATH}" TERM=not-a-terminal FAKE_TPUT_STATUS=3
! nvm_has_italics
) || die 'nvm_has_italics should be false when the terminal is unknown'
(
export PATH="${FAKE_BIN}:${PATH}"
unset TERM
nvm_has_italics
) || die 'nvm_has_italics should query vt100 when TERM is unset'
[ "$(command cat "${TPUT_LOG}")" = '-T vt100 sitm' ] \
|| die "nvm_has_italics should fall back to vt100 when TERM is unset; got >$(command cat "${TPUT_LOG}")<"
(
PATH="${WORK}"
! nvm_has_italics
) || die 'nvm_has_italics should be false when tput is unavailable'
command rm -f "${TPUT_LOG}"
(
export PATH="${FAKE_BIN}:${PATH}" TERM=xterm-256color
nvm_has_colors() { return 1; }
! nvm_has_italics
) || die 'nvm_has_italics should be false when colors are disabled'
[ ! -f "${TPUT_LOG}" ] \
|| die 'nvm_has_italics should not query terminfo when colors are disabled'
if nvm_has tput; then
(
export TERM=dumb
! nvm_has_italics
) || die 'nvm_has_italics should be false for the dumb terminal'
fi
cleanup