1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#!/bin/sh
# Ensure "ls --color" properly colors "normal" text and files.
# I.e., that it uses NORMAL to style non file name output and
# file names with no associated color (unless FILE is also set).
# Copyright (C) 2010-2018 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 <https://www.gnu.org/licenses/>.
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ ls
# Don't let a different umask perturb the results.
umask 22
# Output time as something constant
export TIME_STYLE="+norm"
# helper to strip ls columns up to "norm" time
qls() { sed 's/-r.*norm/norm/'; }
touch exe || framework_failure_
chmod u+x exe || framework_failure_
touch nocolor || framework_failure_
TCOLORS="no=7:ex=01;32"
# Non coloured files inherit NORMAL attributes
LS_COLORS=$TCOLORS ls -gGU --color exe nocolor | qls >> out || fail=1
LS_COLORS=$TCOLORS ls -xU --color exe nocolor >> out || fail=1
LS_COLORS=$TCOLORS ls -gGU --color nocolor exe | qls >> out || fail=1
LS_COLORS=$TCOLORS ls -xU --color nocolor exe >> out || fail=1
# NORMAL does not override FILE though
LS_COLORS=$TCOLORS:fi=1 ls -gGU --color nocolor exe | qls >> out || fail=1
# Support uncolored ordinary files that do _not_ inherit from NORMAL.
# Note there is a redundant RESET output before a non colored
# file in this case which may be removed in future.
LS_COLORS=$TCOLORS:fi= ls -gGU --color nocolor exe | qls >> out || fail=1
LS_COLORS=$TCOLORS:fi=0 ls -gGU --color nocolor exe | qls >> out || fail=1
# A caveat worth noting is that commas (-m), indicator chars (-F)
# and the "total" line, do not currently use NORMAL attributes
LS_COLORS=$TCOLORS ls -mFU --color nocolor exe >> out || fail=1
# Ensure no coloring is done unless enabled
LS_COLORS=$TCOLORS ls -gGU nocolor exe | qls >> out || fail=1
cat -A out > out.display || framework_failure_
mv out.display out || framework_failure_
cat <<\EOF > exp || framework_failure_
^[[0m^[[7mnorm ^[[m^[[01;32mexe^[[0m$
^[[7mnorm nocolor^[[0m$
^[[0m^[[7m^[[m^[[01;32mexe^[[0m ^[[7mnocolor^[[0m$
^[[0m^[[7mnorm nocolor^[[0m$
^[[7mnorm ^[[m^[[01;32mexe^[[0m$
^[[0m^[[7mnocolor^[[0m ^[[7m^[[m^[[01;32mexe^[[0m$
^[[0m^[[7mnorm ^[[m^[[1mnocolor^[[0m$
^[[7mnorm ^[[m^[[01;32mexe^[[0m$
^[[0m^[[7mnorm ^[[m^[[mnocolor^[[0m$
^[[7mnorm ^[[m^[[01;32mexe^[[0m$
^[[0m^[[7mnorm ^[[m^[[0mnocolor^[[0m$
^[[7mnorm ^[[m^[[01;32mexe^[[0m$
^[[0m^[[7mnocolor^[[0m, ^[[7m^[[m^[[01;32mexe^[[0m*$
norm nocolor$
norm exe$
EOF
compare exp out || fail=1
Exit $fail
|