[PATCH v4] Allow TTY tests to run under recent Mac OS

Subsystems: the rest

STALE3736d

3 messages, 3 authors, 2016-06-15 · open the first message on its own page

[PATCH v4] Allow TTY tests to run under recent Mac OS

From: Mike Blume <hidden>
Date: 2016-06-15 23:02:56

TTY tests were previously skipped on all Mac OS systems because of a
bug where reading from pty master occasionally hung. This bug has since
been found not to be reproducible under Mac OS 10.9 and 10.10.1.

Therefore, run TTY tests under Mac OS 10.9 (Mavericks) and higher.

Signed-off-by: Mike Blume <redacted>
Improved-by: Junio C Hamano [off-list ref]
Signed-off-by: Junio C Hamano <redacted>
Improved-by: John Szakmeister [off-list ref]
Improved-by: Johannes Sixt [off-list ref]
Improved-by: Jeff King [off-list ref]
---
 t/lib-terminal.sh | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/t/lib-terminal.sh b/t/lib-terminal.sh
index 5184549..275fb09 100644
--- a/t/lib-terminal.sh
+++ b/t/lib-terminal.sh
@@ -29,7 +29,12 @@ test_lazy_prereq TTY '
 	# After 2000 iterations or so it hangs.
 	# https://rt.cpan.org/Ticket/Display.html?id=65692
 	#
-	test "$(uname -s)" != Darwin &&
+	# Under Mac OS X 10.9, this problem appears to be gone.
+	#
+	{
+		test "$(uname -s)" != Darwin ||
+		test "$(uname -r | cut -d. -f1)" -ge 13
+	} &&
 
 	perl "$TEST_DIRECTORY"/test-terminal.perl \
 		sh -c "test -t 1 && test -t 2"
-- 
2.2.0.rc1.197.g60bf093

Re: [PATCH v4] Allow TTY tests to run under recent Mac OS

From: Jonathan Nieder <hidden>
Date: 2016-06-15 23:02:57

Hi,

Mike Blume wrote:
TTY tests were previously skipped on all Mac OS systems because of a
bug where reading from pty master occasionally hung. This bug has since
been found not to be reproducible under Mac OS 10.9 and 10.10.1.

Therefore, run TTY tests under Mac OS 10.9 (Mavericks) and higher.
*puzzled* Testing on Yosemite with the following script[1]

	perl -MIO::Pty -MFile::Copy -e '
	       for (my $i = 0;; $i++) {
		       my $master = new IO::Pty;
		       my $slave = $master->slave;
		       if (fork == 0) {
			       close $master or die "close: $!";
			       open STDOUT, ">&", $slave or die "dup2: $!";
			       close $slave or die "close: $!";
			       exec("echo", "hi", $i) or die "exec: $!";
		       }
		       close $slave or die "close: $!";
		       copy($master, \*STDOUT) or die "copy: $!";
		       close $master or die "close: $!";
		       wait;
	       }
	'

still seems to hang eventually (after 61 iterations when my officemate
tried it), reproducing the bug.

Do you get a different result?

The bug was originally found in an autobuilder that would run the test
suite when new versions were pushed to check for regressions.  Even if
the hang only happened 0.1% of the time, that would get the
autobuilder stuck after a while, which was how the problem got
noticed.

Thanks,
Jonathan

[1] https://rt.cpan.org/Public/Bug/Display.html?id=65692

Re: [PATCH v4] Allow TTY tests to run under recent Mac OS

From: John Szakmeister <hidden>
Date: 2016-06-15 23:02:57

On Fri, Nov 14, 2014 at 6:21 PM, Jonathan Nieder [off-list ref] wrote:
Hi,

Mike Blume wrote:
quoted
TTY tests were previously skipped on all Mac OS systems because of a
bug where reading from pty master occasionally hung. This bug has since
been found not to be reproducible under Mac OS 10.9 and 10.10.1.

Therefore, run TTY tests under Mac OS 10.9 (Mavericks) and higher.
*puzzled* Testing on Yosemite with the following script[1]

        perl -MIO::Pty -MFile::Copy -e '
               for (my $i = 0;; $i++) {
                       my $master = new IO::Pty;
                       my $slave = $master->slave;
                       if (fork == 0) {
                               close $master or die "close: $!";
                               open STDOUT, ">&", $slave or die "dup2: $!";
                               close $slave or die "close: $!";
                               exec("echo", "hi", $i) or die "exec: $!";
                       }
                       close $slave or die "close: $!";
                       copy($master, \*STDOUT) or die "copy: $!";
                       close $master or die "close: $!";
                       wait;
               }
        '

still seems to hang eventually (after 61 iterations when my officemate
tried it), reproducing the bug.

Do you get a different result?
Interesting.  It took quite a while, but it did finally fail on my
Mavericks box on the 115,140th iteration.
The bug was originally found in an autobuilder that would run the test
suite when new versions were pushed to check for regressions.  Even if
the hang only happened 0.1% of the time, that would get the
autobuilder stuck after a while, which was how the problem got
noticed.
Eek... that's nasty.

-John
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help