summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGuilherme de Almeida Suckevicz <guito.linux@gmail.com>2014-04-16 16:38:49 +0100
committerPádraig Brady <P@draigBrady.com>2014-04-17 02:16:04 +0100
commit08783f100f511b010d040d6119c107cc0d5bc5fc (patch)
tree15a436cea6ba502ccdfe3493450766771209619f /tests
parent943f3592ca10caaee7b991078f33a4e0f985a2f8 (diff)
downloadcoreutils-08783f100f511b010d040d6119c107cc0d5bc5fc.tar.xz
ls: don't output colors with unknown TERM env variable
--colors controls whether to output colors depending on whether we're connected to a terminal or not, while this change gives control over which terminals we output colors to. * NEWS: Mention the change in behavior. * src/ls.c (known_term_type): A new function to search the static list from dircolors.h (parse_ls_colors): Honor the TERM when both LS_COLORS and COLORTERM are non empty. * tests/ls/color-term.sh: A new test. * tests/local.mk: Reference the new test. Fixes http://bugs.gnu.org/15992
Diffstat (limited to 'tests')
-rw-r--r--tests/local.mk1
-rwxr-xr-xtests/ls/color-term.sh48
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/local.mk b/tests/local.mk
index 26aef504f..d58b603bc 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -537,6 +537,7 @@ all_tests = \
tests/ls/color-clear-to-eol.sh \
tests/ls/color-dtype-dir.sh \
tests/ls/color-norm.sh \
+ tests/ls/color-term.sh \
tests/ls/dangle.sh \
tests/ls/dired.sh \
tests/ls/file-type.sh \
diff --git a/tests/ls/color-term.sh b/tests/ls/color-term.sh
new file mode 100755
index 000000000..8eb3783ac
--- /dev/null
+++ b/tests/ls/color-term.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Ensure "ls --color" doesn't output colors for TERM=dumb
+
+# Copyright (C) 2014 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+print_ver_ ls
+
+# Output time as something constant
+export TIME_STYLE="+norm"
+
+touch exe || framework_failure_
+chmod u+x exe || framework_failure_
+
+# output colors
+LS_COLORS='' COLORTERM='nonempty' TERM='' ls --color=always exe >> out || fail=1
+LS_COLORS='' COLORTERM='' TERM='xterm' ls --color=always exe >> out || fail=1
+
+# Don't output colors
+LS_COLORS='' COLORTERM='' TERM='dumb' ls --color=always exe >> out || fail=1
+LS_COLORS='' COLORTERM='' TERM='' ls --color=always exe >> out || fail=1
+
+cat -A out > out.display || framework_failure_
+mv out.display out || framework_failure_
+
+cat <<\EOF > exp || framework_failure_
+^[[0m^[[01;32mexe^[[0m$
+^[[0m^[[01;32mexe^[[0m$
+exe$
+exe$
+EOF
+
+compare exp out || fail=1
+
+Exit $fail