#!/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" < "${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