summaryrefslogtreecommitdiff
path: root/t/lib-terminal.sh
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2011-02-17 12:38:52 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-02-17 23:50:37 (GMT)
commit339e5638b0a11ea3218214ffb57732098c3705df (patch)
tree2f26296b5cd31bd400081a064e46ef09f58c25db /t/lib-terminal.sh
parente674c17db25750f14c1dd1d8f588eb3135b5cea9 (diff)
downloadgit-339e5638b0a11ea3218214ffb57732098c3705df.zip
git-339e5638b0a11ea3218214ffb57732098c3705df.tar.gz
git-339e5638b0a11ea3218214ffb57732098c3705df.tar.bz2
tests: skip terminal output tests on OS X
On Mac OS X 10.5.0, test_terminal gets stuck reading from the pty master every once in a while. To reproduce the problem: 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; } ' It blocks after 7000 iterations or so in sysread(). The relevant sysread() call is the second call by the parent, which presumably executes before the child dies but after the parent has read all output from there. Since this is an intermitent problem, the quick check of terminal support in lib-terminal doesn't catch it. Skip these tests on the Mac for now. Noticed-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/lib-terminal.sh')
-rw-r--r--t/lib-terminal.sh22
1 files changed, 19 insertions, 3 deletions
diff --git a/t/lib-terminal.sh b/t/lib-terminal.sh
index c383b57..58d911d 100644
--- a/t/lib-terminal.sh
+++ b/t/lib-terminal.sh
@@ -1,8 +1,24 @@
#!/bin/sh
-test_expect_success 'set up terminal for tests' '
- if
- test_have_prereq PERL &&
+test_expect_success PERL 'set up terminal for tests' '
+ # Reading from the pty master seems to get stuck _sometimes_
+ # on Mac OS X 10.5.0, using Perl 5.10.0 or 5.8.9.
+ #
+ # Reproduction recipe: run
+ #
+ # i=0
+ # while ./test-terminal.perl echo hi $i
+ # do
+ # : $((i = $i + 1))
+ # done
+ #
+ # After 2000 iterations or so it hangs.
+ # https://rt.cpan.org/Ticket/Display.html?id=65692
+ #
+ if test "$(uname -s)" = Darwin
+ then
+ :
+ elif
"$PERL_PATH" "$TEST_DIRECTORY"/test-terminal.perl \
sh -c "test -t 1 && test -t 2"
then