From: Jonathan Nieder <jrnieder@gmail.com>
To: Tay Ray Chuan <rctay89@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>, Jeff King <peff@peff.net>,
Chase Brammer <cbrammer@gmail.com>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v2 5/8] test_terminal: give priority to test-terminal.perl usage
Date: Sat, 16 Oct 2010 19:38:07 -0500 [thread overview]
Message-ID: <20101017003807.GF20883@burratino> (raw)
In-Reply-To: <1287254223-4496-6-git-send-email-rctay89@gmail.com>
Tay Ray Chuan wrote:
> - use the test_terminal script even when running with "-v"
> if IO::Pty is available, to allow commands like
>
> test_terminal foo >out 2>err
>
> - add a separate TTYREDIR prerequisite which is only set
> when the test_terminal script is usable
>
> - write the "need to declare TTY prerequisite" message to fd 4,
> where it will be printed when running tests with -v, rather
> than being swallowed up by an unrelated redireciton.
The patches up to this one look good to me. This one behaves
as advertised, but I think the API is lousy --- it is just
begging people to use the TTY prereq where TTYREDIR is needed.
Better to change TTY to mean TTYREDIR and drop support for
test_terminal on systems without IO::Pty:
-- 8< --
Subject: test_terminal: ensure redirections work reliably
For terminal tests that capture output/stderr, the TTY prerequisite
warning does not quite work for commands like
test_terminal foo >out 2>err
because the warning gets "swallowed" up by the redirection that's
supposed only to be done by the subcommand.
Even worse, the outcome depends on whether stdout was already a
terminal (in which case test_terminal is a noop) or not (in which case
test_terminal introduces a pseudo-tty in the middle of the pipeline).
$ test_terminal.perl sh -c 'test -t 1 && echo >&2 YES' >out
YES
$ sh -c 'test -t 1 && echo >&2 YES' >out
$
So:
- use the test_terminal script even when running with "-v".
- skip tests that require a terminal when the test_terminal
script is unusable because IO::Pty is not installed.
- write the "need to declare TTY prerequisite" message to fd 4,
where it will be printed when running tests with -v, rather
than being swallowed up by an unrelated redireciton.
Noticed-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
The only other sane alternative I can think of is to introduce
TTYNOREDIR, since at least people wouldn't be tempted to use
that. Distinguishing between
test_expect_success 'foo' '
test_terminal bar >out 2>err
'
and
test_expect_success 'foo' '
test_terminal bar
'
from a script run as
sh t1234-some-script.sh >log 2>err.log
does not seem to be easy without OS-specific hacks like
"readlink /dev/fd/1".
t/lib-terminal.sh | 38 ++++++++++----------------------------
1 files changed, 10 insertions(+), 28 deletions(-)
diff --git a/t/lib-terminal.sh b/t/lib-terminal.sh
index 5e7ee9a..c383b57 100644
--- a/t/lib-terminal.sh
+++ b/t/lib-terminal.sh
@@ -1,37 +1,19 @@
#!/bin/sh
test_expect_success 'set up terminal for tests' '
- if test -t 1 && test -t 2
- then
- >have_tty
- elif
+ if
test_have_prereq PERL &&
"$PERL_PATH" "$TEST_DIRECTORY"/test-terminal.perl \
sh -c "test -t 1 && test -t 2"
then
- >test_terminal_works
+ test_set_prereq TTY &&
+ test_terminal () {
+ if ! test_declared_prereq TTY
+ then
+ echo >&4 "test_terminal: need to declare TTY prerequisite"
+ return 127
+ fi
+ "$PERL_PATH" "$TEST_DIRECTORY"/test-terminal.perl "$@"
+ }
fi
'
-
-if test -e have_tty
-then
- test_terminal_() { "$@"; }
- test_set_prereq TTY
-elif test -e test_terminal_works
-then
- test_terminal_() {
- "$PERL_PATH" "$TEST_DIRECTORY"/test-terminal.perl "$@"
- }
- test_set_prereq TTY
-else
- say "# no usable terminal, so skipping some tests"
-fi
-
-test_terminal () {
- if ! test_declared_prereq TTY
- then
- echo >&2 'test_terminal: need to declare TTY prerequisite'
- return 127
- fi
- test_terminal_ "$@"
-}
--
1.7.2.3
next prev parent reply other threads:[~2010-10-17 0:41 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-12 19:04 Push not writing to standard error Chase Brammer
2010-10-12 19:21 ` Jonathan Nieder
2010-10-12 19:32 ` Jeff King
2010-10-12 19:38 ` Jeff King
2010-10-12 20:37 ` Chase Brammer
2010-10-12 20:48 ` Jeff King
2010-10-12 22:18 ` Chase Brammer
2010-10-13 17:33 ` Junio C Hamano
2010-10-13 17:45 ` Jeff King
2010-10-12 22:21 ` [PATCH] Fix to push --progress. The --progress flag was not being passed into tranport.c from send-pack.h, making the --progress flag unusable Chase Brammer
2010-10-12 22:44 ` Jonathan Nieder
2010-10-13 17:49 ` Junio C Hamano
2010-10-13 17:55 ` Jeff King
2010-10-13 18:40 ` Tay Ray Chuan
2010-10-13 19:31 ` [PATCH 0/3] fix push --progress over file://, git://, etc Tay Ray Chuan
2010-10-13 19:31 ` [PATCH 1/3] t5523-push-upstream: add function to ensure fresh upstream repo Tay Ray Chuan
2010-10-13 19:30 ` Jonathan Nieder
2010-10-13 19:31 ` [PATCH 2/3] t5523-push-upstream: test progress messages Tay Ray Chuan
2010-10-13 19:31 ` [PATCH 3/3] push: pass --progress down to git-pack-objects Tay Ray Chuan
2010-10-14 0:59 ` Tay Ray Chuan
2010-10-14 1:24 ` Jeff King
2010-10-13 19:35 ` [PATCH 0/3] fix push --progress over file://, git://, etc Tay Ray Chuan
2010-10-16 18:36 ` [PATCH v2 0/8] " Tay Ray Chuan
2010-10-16 18:36 ` [PATCH v2 1/8] tests: factor out terminal handling from t7006 Tay Ray Chuan
2010-10-16 18:36 ` [PATCH v2 2/8] tests: test terminal output to both stdout and stderr Tay Ray Chuan
2010-10-16 18:36 ` [PATCH v2 3/8] test-lib: allow test code to check the list of declared prerequisites Tay Ray Chuan
2010-10-16 18:36 ` [PATCH v2 4/8] test_terminal: catch use without TTY prerequisite Tay Ray Chuan
2010-10-16 18:37 ` [PATCH v2 5/8] test_terminal: give priority to test-terminal.perl usage Tay Ray Chuan
2010-10-16 18:37 ` [PATCH v2 6/8] t5523-push-upstream: add function to ensure fresh upstream repo Tay Ray Chuan
2010-10-16 18:37 ` [PATCH v2 7/8] t5523-push-upstream: test progress messages Tay Ray Chuan
2010-10-16 18:37 ` [PATCH v2 8/8] push: pass --progress down to git-pack-objects Tay Ray Chuan
2010-10-17 0:46 ` [PATCH v2 7/8] t5523-push-upstream: test progress messages Jonathan Nieder
2010-10-17 0:38 ` Jonathan Nieder [this message]
2010-10-22 19:42 ` [PATCH v2 5/8] test_terminal: give priority to test-terminal.perl usage Jeff King
2010-10-17 0:51 ` [PATCH v2 0/8] fix push --progress over file://, git://, etc Jonathan Nieder
2010-10-14 3:02 ` [PATCH 0/3] more push progress tests Jeff King
2010-10-14 3:04 ` [PATCH 1/3] tests: factor out terminal handling from t7006 Jeff King
2010-10-14 3:10 ` Jonathan Nieder
2010-10-14 3:04 ` [PATCH 2/3] tests: test terminal output to both stdout and stderr Jeff King
2010-10-14 3:27 ` Jonathan Nieder
2010-10-14 3:05 ` [PATCH 3/3] t5523: test push progress output to tty Jeff King
2010-10-14 3:16 ` Jonathan Nieder
2010-10-14 3:34 ` Jeff King
2010-10-14 20:37 ` [PATCH/RFC 0/2] test_terminal: check that TTY prerequisite is declared Jonathan Nieder
2010-10-14 20:40 ` [PATCH 1/2] test-lib: allow test code to check the list of declared prerequisites Jonathan Nieder
2010-10-15 5:18 ` Ævar Arnfjörð Bjarmason
2010-10-15 5:34 ` Jonathan Nieder
2010-10-14 20:41 ` [PATCH 2/2] test_terminal: catch use without TTY prerequisite Jonathan Nieder
2010-10-15 4:42 ` [PATCH/RFC 0/2] test_terminal: check that TTY prerequisite is declared Jeff King
2010-10-15 11:27 ` Tay Ray Chuan
2010-10-18 16:39 ` Push not writing to standard error Scott R. Godin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101017003807.GF20883@burratino \
--to=jrnieder@gmail.com \
--cc=cbrammer@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=rctay89@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.