[PATCH v2] allow TTY tests to run under recent Mac OS

Subsystems: the rest

DORMANTno replies

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

[PATCH v2] allow TTY tests to run under recent Mac OS

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

listed bug doesn't reproduce on Mac OS Yosemite. For now, just enable
TTY on Yosemite and higher

Signed-off-by: Mike Blume <redacted>
Improved-by: Junio C Hamano [off-list ref]
---
 t/lib-terminal.sh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/t/lib-terminal.sh b/t/lib-terminal.sh
index 5184549..6395a34 100644
--- a/t/lib-terminal.sh
+++ b/t/lib-terminal.sh
@@ -29,7 +29,10 @@ 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.10.1 and Perl 5.18.2, this problem
+	# appears to be gone.
+	#
+	test "$(uname -s)" != Darwin || test "$(uname -r | cut -d. -f1)" -ge 14 &&
 
 	perl "$TEST_DIRECTORY"/test-terminal.perl \
 		sh -c "test -t 1 && test -t 2"
-- 
2.2.0.rc1.197.g60bf093

Re: [PATCH v2] allow TTY tests to run under recent Mac OS

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

On Thu, Nov 13, 2014 at 5:40 PM, Mike Blume [off-list ref] wrote:
listed bug doesn't reproduce on Mac OS Yosemite. For now, just enable
TTY on Yosemite and higher
I've tried the reproduction recipe on Mavericks (`uname -r` => 13.4.0)
and it works fine--still going after 12,000 iterations.  Trying the
same thing on Snow Leopard shows that it still fails there--it died
after 182 iterations.

So I think the check can be relaxed to `-ge 13`.

-John

Re: [PATCH v2] allow TTY tests to run under recent Mac OS

From: Johannes Sixt <hidden>
Date: 2016-06-15 23:02:56

Am 13.11.2014 um 23:40 schrieb Mike Blume:
quoted hunk
listed bug doesn't reproduce on Mac OS Yosemite. For now, just enable
TTY on Yosemite and higher

Signed-off-by: Mike Blume <redacted>
Improved-by: Junio C Hamano [off-list ref]
---
 t/lib-terminal.sh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/t/lib-terminal.sh b/t/lib-terminal.sh
index 5184549..6395a34 100644
--- a/t/lib-terminal.sh
+++ b/t/lib-terminal.sh
@@ -29,7 +29,10 @@ 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.10.1 and Perl 5.18.2, this problem
+	# appears to be gone.
+	#
+	test "$(uname -s)" != Darwin || test "$(uname -r | cut -d. -f1)" -ge 14 &&
This is part of an &&-chain; you can't just throw in a || in the middle.

How about

	if test "$(uname -s)" = Darwin
	then
		test "$(uname -r | cut -d. -f1)" -ge 14
	fi &&
 
 	perl "$TEST_DIRECTORY"/test-terminal.perl \
 		sh -c "test -t 1 && test -t 2"
-- Hannes

Re: [PATCH v2] allow TTY tests to run under recent Mac OS

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

My understanding is that && and || have equal precedence, and this
seems to be borne out in testing at my shell. If the if/then method is
clearer I'm happy to go with that.

On Fri, Nov 14, 2014 at 11:23 AM, Johannes Sixt [off-list ref] wrote:
Am 13.11.2014 um 23:40 schrieb Mike Blume:
quoted
listed bug doesn't reproduce on Mac OS Yosemite. For now, just enable
TTY on Yosemite and higher

Signed-off-by: Mike Blume <redacted>
Improved-by: Junio C Hamano [off-list ref]
---
 t/lib-terminal.sh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/t/lib-terminal.sh b/t/lib-terminal.sh
index 5184549..6395a34 100644
--- a/t/lib-terminal.sh
+++ b/t/lib-terminal.sh
@@ -29,7 +29,10 @@ 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.10.1 and Perl 5.18.2, this problem
+     # appears to be gone.
+     #
+     test "$(uname -s)" != Darwin || test "$(uname -r | cut -d. -f1)" -ge 14 &&
This is part of an &&-chain; you can't just throw in a || in the middle.

How about

        if test "$(uname -s)" = Darwin
        then
                test "$(uname -r | cut -d. -f1)" -ge 14
        fi &&
quoted
      perl "$TEST_DIRECTORY"/test-terminal.perl \
              sh -c "test -t 1 && test -t 2"
-- Hannes

Re: [PATCH v2] allow TTY tests to run under recent Mac OS

From: Jeff King <hidden>
Date: 2016-06-15 23:02:56

On Fri, Nov 14, 2014 at 11:48:36AM -0800, Michael Blume wrote:
My understanding is that && and || have equal precedence, and this
seems to be borne out in testing at my shell. If the if/then method is
clearer I'm happy to go with that.
I think the problem is that there are earlier parts of the chain. It
currently looks like:

  foo &&
  bar &&
  do_something

but you are making it:

  foo &&
  bar || baz &&
  do_something

which will do_something whether or not "foo" is true. You need to put
your "||" at a lower precedence than the rest of the chain. The "if"
that Johannes mentioned works, though I think

  test_have_prereq PERL &&
  {
    test "$(uname -s)" != Darwin ||
    test "$(uname -r | cut -d. -f1)" -ge 13
  } &&
  ...

is more obvious to read (but that's subjective, of course).

-Peff

Re: [PATCH v2] allow TTY tests to run under recent Mac OS

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

Right, I missed that there was more going on above, thanks =)

On Fri, Nov 14, 2014 at 12:02 PM, Jeff King [off-list ref] wrote:
On Fri, Nov 14, 2014 at 11:48:36AM -0800, Michael Blume wrote:
quoted
My understanding is that && and || have equal precedence, and this
seems to be borne out in testing at my shell. If the if/then method is
clearer I'm happy to go with that.
I think the problem is that there are earlier parts of the chain. It
currently looks like:

  foo &&
  bar &&
  do_something

but you are making it:

  foo &&
  bar || baz &&
  do_something

which will do_something whether or not "foo" is true. You need to put
your "||" at a lower precedence than the rest of the chain. The "if"
that Johannes mentioned works, though I think

  test_have_prereq PERL &&
  {
    test "$(uname -s)" != Darwin ||
    test "$(uname -r | cut -d. -f1)" -ge 13
  } &&
  ...

is more obvious to read (but that's subjective, of course).

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