t / lib-terminal.shon commit Merge branch 'md/filter-trees' (77d5037)
   1# Helpers for terminal output tests.
   2
   3# Catch tests which should depend on TTY but forgot to. There's no need
   4# to additionally check that the TTY prereq is set here.  If the test declared
   5# it and we are running the test, then it must have been set.
   6test_terminal () {
   7        if ! test_declared_prereq TTY
   8        then
   9                echo >&4 "test_terminal: need to declare TTY prerequisite"
  10                return 127
  11        fi
  12        perl "$TEST_DIRECTORY"/test-terminal.perl "$@" 2>&7
  13} 7>&2 2>&4
  14
  15test_lazy_prereq TTY '
  16        test_have_prereq PERL &&
  17
  18        # Reading from the pty master seems to get stuck _sometimes_
  19        # on Mac OS X 10.5.0, using Perl 5.10.0 or 5.8.9.
  20        #
  21        # Reproduction recipe: run
  22        #
  23        #       i=0
  24        #       while ./test-terminal.perl echo hi $i
  25        #       do
  26        #               : $((i = $i + 1))
  27        #       done
  28        #
  29        # After 2000 iterations or so it hangs.
  30        # https://rt.cpan.org/Ticket/Display.html?id=65692
  31        #
  32        test "$(uname -s)" != Darwin &&
  33
  34        perl "$TEST_DIRECTORY"/test-terminal.perl \
  35                sh -c "test -t 1 && test -t 2"
  36'