зеркало из https://github.com/microsoft/git.git
Merge branch 'rh/test-color-avoid-terminfo-in-original-home'
An ancient test framework enhancement to allow color was not entirely correct; this makes it work even when tput needs to read from the ~/.terminfo under the user's real HOME directory. * rh/test-color-avoid-terminfo-in-original-home: test-lib.sh: fix color support when tput needs ~/.terminfo Revert "test-lib.sh: do tests for color support after changing HOME"
This commit is contained in:
Коммит
615eb98a83
|
@ -15,9 +15,6 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see http://www.gnu.org/licenses/ .
|
||||
|
||||
# Keep the original TERM for say_color
|
||||
ORIGINAL_TERM=$TERM
|
||||
|
||||
# Test the binaries we have just built. The tests are kept in
|
||||
# t/ subdirectory and are run in 'trash directory' subdirectory.
|
||||
if test -z "$TEST_DIRECTORY"
|
||||
|
@ -68,12 +65,12 @@ done,*)
|
|||
esac
|
||||
|
||||
# For repeatability, reset the environment to known value.
|
||||
# TERM is sanitized below, after saving color control sequences.
|
||||
LANG=C
|
||||
LC_ALL=C
|
||||
PAGER=cat
|
||||
TZ=UTC
|
||||
TERM=dumb
|
||||
export LANG LC_ALL PAGER TERM TZ
|
||||
export LANG LC_ALL PAGER TZ
|
||||
EDITOR=:
|
||||
# A call to "unset" with no arguments causes at least Solaris 10
|
||||
# /usr/xpg4/bin/sh and /bin/ksh to bail out. So keep the unsets
|
||||
|
@ -181,8 +178,14 @@ export _x05 _x40 _z40 LF u200c
|
|||
# This test checks if command xyzzy does the right thing...
|
||||
# '
|
||||
# . ./test-lib.sh
|
||||
test "x$TERM" != "xdumb" && (
|
||||
test -t 1 &&
|
||||
tput bold >/dev/null 2>&1 &&
|
||||
tput setaf 1 >/dev/null 2>&1 &&
|
||||
tput sgr0 >/dev/null 2>&1
|
||||
) &&
|
||||
color=t
|
||||
|
||||
unset color
|
||||
while test "$#" -ne 0
|
||||
do
|
||||
case "$1" in
|
||||
|
@ -253,6 +256,44 @@ then
|
|||
verbose=t
|
||||
fi
|
||||
|
||||
if test -n "$color"
|
||||
then
|
||||
# Save the color control sequences now rather than run tput
|
||||
# each time say_color() is called. This is done for two
|
||||
# reasons:
|
||||
# * TERM will be changed to dumb
|
||||
# * HOME will be changed to a temporary directory and tput
|
||||
# might need to read ~/.terminfo from the original HOME
|
||||
# directory to get the control sequences
|
||||
# Note: This approach assumes the control sequences don't end
|
||||
# in a newline for any terminal of interest (command
|
||||
# substitutions strip trailing newlines). Given that most
|
||||
# (all?) terminals in common use are related to ECMA-48, this
|
||||
# shouldn't be a problem.
|
||||
say_color_error=$(tput bold; tput setaf 1) # bold red
|
||||
say_color_skip=$(tput setaf 4) # blue
|
||||
say_color_warn=$(tput setaf 3) # brown/yellow
|
||||
say_color_pass=$(tput setaf 2) # green
|
||||
say_color_info=$(tput setaf 6) # cyan
|
||||
say_color_reset=$(tput sgr0)
|
||||
say_color_="" # no formatting for normal text
|
||||
say_color () {
|
||||
test -z "$1" && test -n "$quiet" && return
|
||||
eval "say_color_color=\$say_color_$1"
|
||||
shift
|
||||
printf "%s\\n" "$say_color_color$*$say_color_reset"
|
||||
}
|
||||
else
|
||||
say_color() {
|
||||
test -z "$1" && test -n "$quiet" && return
|
||||
shift
|
||||
printf "%s\n" "$*"
|
||||
}
|
||||
fi
|
||||
|
||||
TERM=dumb
|
||||
export TERM
|
||||
|
||||
error () {
|
||||
say_color error "error: $*"
|
||||
GIT_EXIT_OK=t
|
||||
|
@ -829,52 +870,6 @@ HOME="$TRASH_DIRECTORY"
|
|||
GNUPGHOME="$HOME/gnupg-home-not-used"
|
||||
export HOME GNUPGHOME
|
||||
|
||||
# run the tput tests *after* changing HOME (in case ncurses needs
|
||||
# ~/.terminfo for $TERM)
|
||||
test -n "${color+set}" || test "x$ORIGINAL_TERM" != "xdumb" && (
|
||||
TERM=$ORIGINAL_TERM &&
|
||||
export TERM &&
|
||||
test -t 1 &&
|
||||
tput bold >/dev/null 2>&1 &&
|
||||
tput setaf 1 >/dev/null 2>&1 &&
|
||||
tput sgr0 >/dev/null 2>&1
|
||||
) &&
|
||||
color=t
|
||||
|
||||
if test -n "$color"
|
||||
then
|
||||
say_color () {
|
||||
(
|
||||
TERM=$ORIGINAL_TERM
|
||||
export TERM
|
||||
case "$1" in
|
||||
error)
|
||||
tput bold; tput setaf 1;; # bold red
|
||||
skip)
|
||||
tput setaf 4;; # blue
|
||||
warn)
|
||||
tput setaf 3;; # brown/yellow
|
||||
pass)
|
||||
tput setaf 2;; # green
|
||||
info)
|
||||
tput setaf 6;; # cyan
|
||||
*)
|
||||
test -n "$quiet" && return;;
|
||||
esac
|
||||
shift
|
||||
printf "%s" "$*"
|
||||
tput sgr0
|
||||
echo
|
||||
)
|
||||
}
|
||||
else
|
||||
say_color() {
|
||||
test -z "$1" && test -n "$quiet" && return
|
||||
shift
|
||||
printf "%s\n" "$*"
|
||||
}
|
||||
fi
|
||||
|
||||
if test -z "$TEST_NO_CREATE_REPO"
|
||||
then
|
||||
test_create_repo "$TRASH_DIRECTORY"
|
||||
|
|
Загрузка…
Ссылка в новой задаче