summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBernhard Voelker <mail@bernhard-voelker.de>2015-02-20 08:10:51 +0100
committerBernhard Voelker <mail@bernhard-voelker.de>2015-02-20 14:00:41 +0100
commit7ceaf1d975a17d07f1704d8edf4476218148cfba (patch)
tree81aa51f01ff422b9a7224372c27236a63eb26b40 /tests
parent3f2f05f06763d79a7cab525a3ea2d726df3e3736 (diff)
downloadcoreutils-7ceaf1d975a17d07f1704d8edf4476218148cfba.tar.xz
tee: treat '-' operand as file name as mandated by POSIX
Since v5.2.1-1247-g8dafbe5, tee(1) treated '-' as stdout while POSIX explicitly requires to treat this as a file name. Revert this change, as the interleaved output - due to sending another copy of input to stdout - is not considered to be useful. Discussed in http://lists.gnu.org/archive/html/coreutils/2015-02/msg00085.html * src/tee.c (tee_files): Remove the special handling for "-" operands. (usage): Remove the corresponding sentence. * doc/coreutils.texi (common options): Remove the "tee -" example. (tee invocation): Document that tee(1) now treats "-" as a file name. * tests/misc/tee.sh: Add a test case for "tee -". While at it, re-indent the above multi-argument processing case and extend that to 13 operands, as POSIX mandates that, too. * tests/misc/tee-dash.sh: Remove now-obsolete test. * tests/local.mk (all_tests): Remove the above test. * NEWS (Changes in behavior): Mention the change.
Diffstat (limited to 'tests')
-rw-r--r--tests/local.mk1
-rwxr-xr-xtests/misc/tee-dash.sh24
-rwxr-xr-xtests/misc/tee.sh25
3 files changed, 16 insertions, 34 deletions
diff --git a/tests/local.mk b/tests/local.mk
index 53c7c83e0..9a5208082 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -382,7 +382,6 @@ all_tests = \
tests/misc/tac-2-nonseekable.sh \
tests/misc/tail.pl \
tests/misc/tee.sh \
- tests/misc/tee-dash.sh \
tests/misc/test-diag.pl \
tests/misc/timeout.sh \
tests/misc/timeout-blocked.pl \
diff --git a/tests/misc/tee-dash.sh b/tests/misc/tee-dash.sh
deleted file mode 100755
index 1063211cf..000000000
--- a/tests/misc/tee-dash.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-# test for "tee -".
-
-# Copyright (C) 2005-2015 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_ tee
-
-tee - </dev/null || fail=1
-
-Exit $fail
diff --git a/tests/misc/tee.sh b/tests/misc/tee.sh
index 5f2eeda7b..ecca6562b 100755
--- a/tests/misc/tee.sh
+++ b/tests/misc/tee.sh
@@ -20,17 +20,24 @@
print_ver_ tee
echo line >sample || framework_failure_
-nums=$(seq 9) || framework_failure_
-
-for n in 0 $nums; do
- files=$(seq $n)
- rm -f $files
- tee $files <sample >out || fail=1
- for f in out $files; do
- compare sample $f || fail=1
- done
+
+# POSIX says: "Processing of at least 13 file operands shall be supported."
+for n in 0 1 2 12 13; do
+ files=$(seq $n)
+ rm -f $files
+ tee $files <sample >out || fail=1
+ for f in out $files; do
+ compare sample $f || fail=1
+ done
done
+# Ensure tee treats '-' as the name of a file, as mandated by POSIX.
+# Between v5.3.0 and v8.23, a '-' argument caused tee to send another
+# copy of input to standard output.
+tee - <sample >out 2>err || fail=1
+compare sample ./- || fail=1
+compare sample out || fail=1
+compare /dev/null err || fail
# Ensure tee exits early if no more writable outputs
if test -w /dev/full && test -c /dev/full; then