diff options
author | Bernhard Voelker <mail@bernhard-voelker.de> | 2015-02-20 08:10:51 +0100 |
---|---|---|
committer | Bernhard Voelker <mail@bernhard-voelker.de> | 2015-02-20 14:00:41 +0100 |
commit | 7ceaf1d975a17d07f1704d8edf4476218148cfba (patch) | |
tree | 81aa51f01ff422b9a7224372c27236a63eb26b40 /tests | |
parent | 3f2f05f06763d79a7cab525a3ea2d726df3e3736 (diff) | |
download | coreutils-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.mk | 1 | ||||
-rwxr-xr-x | tests/misc/tee-dash.sh | 24 | ||||
-rwxr-xr-x | tests/misc/tee.sh | 25 |
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 |