All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tay Ray Chuan <rctay89@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Cc: Jeff King <peff@peff.net>, Jonathan Nieder <jrnieder@gmail.com>,
	Chase Brammer <cbrammer@gmail.com>,
	Junio C Hamano <gitster@pobox.com>
Subject: [PATCH v2 1/8] tests: factor out terminal handling from t7006
Date: Sun, 17 Oct 2010 02:36:56 +0800	[thread overview]
Message-ID: <1287254223-4496-2-git-send-email-rctay89@gmail.com> (raw)
In-Reply-To: <1287254223-4496-1-git-send-email-rctay89@gmail.com>

From: Jeff King <peff@peff.net>

Other tests besides the pager ones may want to check how we handle
output to a terminal. This patch makes the code reusable.

Signed-off-by: Jeff King <peff@peff.net>
---

  No change.

 t/lib-terminal.sh          |   28 +++++++++++++++++++++
 t/t7006-pager.sh           |   31 +----------------------
 t/t7006/test-terminal.perl |   58 --------------------------------------------
 t/test-terminal.perl       |   58 ++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 87 insertions(+), 88 deletions(-)
 create mode 100644 t/lib-terminal.sh
 delete mode 100755 t/t7006/test-terminal.perl
 create mode 100755 t/test-terminal.perl

diff --git a/t/lib-terminal.sh b/t/lib-terminal.sh
new file mode 100644
index 0000000..6fc33db
--- /dev/null
+++ b/t/lib-terminal.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+test_expect_success 'set up terminal for tests' '
+	if test -t 1
+	then
+		>stdout_is_tty
+	elif
+		test_have_prereq PERL &&
+		"$PERL_PATH" "$TEST_DIRECTORY"/test-terminal.perl \
+			sh -c "test -t 1"
+	then
+		>test_terminal_works
+	fi
+'
+
+if test -e stdout_is_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
diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh
index fb744e3..17e54d3 100755
--- a/t/t7006-pager.sh
+++ b/t/t7006-pager.sh
@@ -4,42 +4,13 @@ test_description='Test automatic use of a pager.'
 
 . ./test-lib.sh
 . "$TEST_DIRECTORY"/lib-pager.sh
+. "$TEST_DIRECTORY"/lib-terminal.sh
 
 cleanup_fail() {
 	echo >&2 cleanup failed
 	(exit 1)
 }
 
-test_expect_success 'set up terminal for tests' '
-	rm -f stdout_is_tty ||
-	cleanup_fail &&
-
-	if test -t 1
-	then
-		>stdout_is_tty
-	elif
-		test_have_prereq PERL &&
-		"$PERL_PATH" "$TEST_DIRECTORY"/t7006/test-terminal.perl \
-			sh -c "test -t 1"
-	then
-		>test_terminal_works
-	fi
-'
-
-if test -e stdout_is_tty
-then
-	test_terminal() { "$@"; }
-	test_set_prereq TTY
-elif test -e test_terminal_works
-then
-	test_terminal() {
-		"$PERL_PATH" "$TEST_DIRECTORY"/t7006/test-terminal.perl "$@"
-	}
-	test_set_prereq TTY
-else
-	say "# no usable terminal, so skipping some tests"
-fi
-
 test_expect_success 'setup' '
 	unset GIT_PAGER GIT_PAGER_IN_USE;
 	test_might_fail git config --unset core.pager &&
diff --git a/t/t7006/test-terminal.perl b/t/t7006/test-terminal.perl
deleted file mode 100755
index 73ff809..0000000
--- a/t/t7006/test-terminal.perl
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/perl
-use strict;
-use warnings;
-use IO::Pty;
-use File::Copy;
-
-# Run @$argv in the background with stdout redirected to $out.
-sub start_child {
-	my ($argv, $out) = @_;
-	my $pid = fork;
-	if (not defined $pid) {
-		die "fork failed: $!"
-	} elsif ($pid == 0) {
-		open STDOUT, ">&", $out;
-		close $out;
-		exec(@$argv) or die "cannot exec '$argv->[0]': $!"
-	}
-	return $pid;
-}
-
-# Wait for $pid to finish.
-sub finish_child {
-	# Simplified from wait_or_whine() in run-command.c.
-	my ($pid) = @_;
-
-	my $waiting = waitpid($pid, 0);
-	if ($waiting < 0) {
-		die "waitpid failed: $!";
-	} elsif ($? & 127) {
-		my $code = $? & 127;
-		warn "died of signal $code";
-		return $code - 128;
-	} else {
-		return $? >> 8;
-	}
-}
-
-sub xsendfile {
-	my ($out, $in) = @_;
-
-	# Note: the real sendfile() cannot read from a terminal.
-
-	# 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) {
-	die "usage: test-terminal program args";
-}
-my $master = new IO::Pty;
-my $slave = $master->slave;
-my $pid = start_child(\@ARGV, $slave);
-close $slave;
-xsendfile(\*STDOUT, $master);
-exit(finish_child($pid));
diff --git a/t/test-terminal.perl b/t/test-terminal.perl
new file mode 100755
index 0000000..73ff809
--- /dev/null
+++ b/t/test-terminal.perl
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use IO::Pty;
+use File::Copy;
+
+# Run @$argv in the background with stdout redirected to $out.
+sub start_child {
+	my ($argv, $out) = @_;
+	my $pid = fork;
+	if (not defined $pid) {
+		die "fork failed: $!"
+	} elsif ($pid == 0) {
+		open STDOUT, ">&", $out;
+		close $out;
+		exec(@$argv) or die "cannot exec '$argv->[0]': $!"
+	}
+	return $pid;
+}
+
+# Wait for $pid to finish.
+sub finish_child {
+	# Simplified from wait_or_whine() in run-command.c.
+	my ($pid) = @_;
+
+	my $waiting = waitpid($pid, 0);
+	if ($waiting < 0) {
+		die "waitpid failed: $!";
+	} elsif ($? & 127) {
+		my $code = $? & 127;
+		warn "died of signal $code";
+		return $code - 128;
+	} else {
+		return $? >> 8;
+	}
+}
+
+sub xsendfile {
+	my ($out, $in) = @_;
+
+	# Note: the real sendfile() cannot read from a terminal.
+
+	# 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) {
+	die "usage: test-terminal program args";
+}
+my $master = new IO::Pty;
+my $slave = $master->slave;
+my $pid = start_child(\@ARGV, $slave);
+close $slave;
+xsendfile(\*STDOUT, $master);
+exit(finish_child($pid));
-- 
1.7.2.2.513.ge1ef3

  reply	other threads:[~2010-10-16 18:37 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         ` Tay Ray Chuan [this message]
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                   ` [PATCH v2 5/8] test_terminal: give priority to test-terminal.perl usage Jonathan Nieder
2010-10-22 19:42                   ` 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=1287254223-4496-2-git-send-email-rctay89@gmail.com \
    --to=rctay89@gmail.com \
    --cc=cbrammer@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=peff@peff.net \
    /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.