From: Jonathan Nieder <jrnieder@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Brandon Casey <drafnel@gmail.com>, Jeff King <peff@peff.net>,
git@vger.kernel.org,
Sebastian Celis <sebastian@sebastiancelis.com>,
Johannes Sixt <j6t@kdbg.org>
Subject: [PATCH squash] Simplify test-terminal.perl
Date: Sat, 20 Feb 2010 03:48:20 -0600 [thread overview]
Message-ID: <20100220094820.GA32456@progeny.tock> (raw)
In-Reply-To: <20100220085025.GA26788@progeny.tock>
The File::Copy module is included with perl (since version 5.002,
1995), so this simplification comes for free. It does not make the
test noticeably faster or slower.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Jonathan Nieder wrote:
> it is much slower than the C version.
I take that back. The perl version takes roughly 3.7 s and the
C version 3.4 s here (both with hot cache). Noticeable alone, but a
tiny blip in the context of a full test run.
Sorry to mislead.
t/t7006/test-terminal.perl | 26 +++++++-------------------
1 files changed, 7 insertions(+), 19 deletions(-)
diff --git a/t/t7006/test-terminal.perl b/t/t7006/test-terminal.perl
index b51cfc6..73ff809 100755
--- a/t/t7006/test-terminal.perl
+++ b/t/t7006/test-terminal.perl
@@ -2,8 +2,9 @@
use strict;
use warnings;
use IO::Pty;
+use File::Copy;
-# Fork and execute @$argv with stdout redirected to $out.
+# Run @$argv in the background with stdout redirected to $out.
sub start_child {
my ($argv, $out) = @_;
my $pid = fork;
@@ -37,26 +38,13 @@ sub finish_child {
sub xsendfile {
my ($out, $in) = @_;
- my $buf;
-
# Note: the real sendfile() cannot read from a terminal.
- for (;;) {
- my $n = sysread $in, $buf, 4096;
- # It is unspecified by POSIX whether reads
- # from a disconnected terminal will return
- # EIO (as in AIX 4.x, IRIX, and Linux) or
- # end-of-file. Either is fine.
- if (!defined($n) && $!{EIO}) {
- return;
- } elsif (!defined($n)) {
- die "cannot read from child: $!";
- } elsif ($n == 0) {
- return;
- } else {
- print $out $buf or die "write error: $!";
- }
- }
+ # It is unspecified by POSIX whether reads
+ # from a disconnected terminal will return
+ # EIO (as in AIX 4.x, IRIX, and Linux) or
+ # end-of-file. Either is fine.
+ copy($in, $out, 4096) or $!{EIO} or die "cannot copy from child: $!";
}
if ($#ARGV < 1) {
--
1.7.0
prev parent reply other threads:[~2010-02-20 9:48 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-19 6:50 [PATCH v2 0/7] Re: 'git svn log' no longer uses the pager Jonathan Nieder
2010-02-19 6:51 ` [PATCH 1/7] Fix 'git var' usage synopsis Jonathan Nieder
2010-02-19 7:00 ` [PATCH 2/7] Make 'git var GIT_PAGER' always print the configured pager Jonathan Nieder
2010-02-19 7:06 ` [PATCH 3/7] git.1: Clarify the behavior of the --paginate option Jonathan Nieder
2010-02-19 7:09 ` [PATCH 4/7] git svn: Fix launching of pager Jonathan Nieder
2010-02-19 7:12 ` [PATCH 5/7] am: " Jonathan Nieder
2010-02-19 7:18 ` [PATCH 6/7] tests: Add tests for automatic use " Jonathan Nieder
2010-02-20 17:33 ` Junio C Hamano
2010-02-21 2:03 ` [PATCH v2 " Jonathan Nieder
2010-02-21 2:09 ` [PATCH v4 7/7] t7006-pager: if stdout is not a terminal, make a new one Jonathan Nieder
2010-02-21 7:30 ` Jeff King
2010-02-22 8:19 ` [PATCH v2 6/7] tests: Add tests for automatic use of pager Johannes Sixt
2010-02-22 8:46 ` [PATCH 8/7] tests: Fix race condition in t7006-pager Jonathan Nieder
2010-02-22 9:12 ` Jonathan Nieder
2010-02-19 7:23 ` [PATCH/RFC 7/7] t7006-pager: if stdout is not a terminal, make a new one Jonathan Nieder
2010-02-19 8:08 ` Jeff King
2010-02-19 8:19 ` Jonathan Nieder
2010-02-19 8:34 ` Jeff King
2010-02-19 16:25 ` Brandon Casey
2010-02-20 0:29 ` Brandon Casey
2010-02-20 0:39 ` Jonathan Nieder
2010-02-20 3:42 ` Brandon Casey
2010-02-20 5:25 ` [PATCH v2 " Jonathan Nieder
2010-02-20 6:53 ` Junio C Hamano
2010-02-20 8:50 ` [PATCH v3 " Jonathan Nieder
2010-02-20 9:48 ` Jonathan Nieder [this message]
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=20100220094820.GA32456@progeny.tock \
--to=jrnieder@gmail.com \
--cc=drafnel@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=peff@peff.net \
--cc=sebastian@sebastiancelis.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.