diff -r bd67fd3eb42e Lib/test/libregrtest/runtest_mp.py --- a/Lib/test/libregrtest/runtest_mp.py Sun May 22 18:23:51 2016 +0300 +++ b/Lib/test/libregrtest/runtest_mp.py Sun May 22 19:06:54 2016 +0300 @@ -124,6 +124,8 @@ class MultiprocessThread(threading.Threa finally: self.current_test = None + #print(('stdout', stdout)) + #print(('stderr', stderr)) stdout, _, result = stdout.strip().rpartition("\n") if retcode != 0: result = (CHILD_ERROR, "Exit code %s" % retcode) diff -r bd67fd3eb42e Lib/test/test_curses.py --- a/Lib/test/test_curses.py Sun May 22 18:23:51 2016 +0300 +++ b/Lib/test/test_curses.py Sun May 22 19:06:54 2016 +0300 @@ -42,14 +42,15 @@ class TestCurses(unittest.TestCase): @classmethod def setUpClass(cls): - if not sys.__stdout__.isatty(): - # Temporary skip tests on non-tty - raise unittest.SkipTest('sys.__stdout__ is not a tty') + cls.tmp = None + if sys.__stdout__.isatty(): + fd = sys.__stdout__.fileno() + elif sys.__stderr__.isatty(): + fd = sys.__stderr__.fileno() + else: cls.tmp = tempfile.TemporaryFile() fd = cls.tmp.fileno() - else: - cls.tmp = None - fd = sys.__stdout__.fileno() + cls.isatty = not cls.tmp # testing setupterm() inside initscr/endwin # causes terminal breakage curses.setupterm(fd=fd) @@ -65,11 +66,17 @@ class TestCurses(unittest.TestCase): # just to make the test output a little more readable print() self.stdscr = curses.initscr() - curses.savetty() + try: + curses.savetty() + except curses.error: + pass def tearDown(self): - curses.resetty() - curses.endwin() + try: + curses.resetty() + curses.endwin() + except curses.error: + pass def test_window_funcs(self): "Test the methods of windows" @@ -190,14 +197,22 @@ class TestCurses(unittest.TestCase): def test_module_funcs(self): "Test module-level functions" + if not self.isatty: + raise unittest.SkipTest('sys.__stdout__ is not a tty') + if self.isatty: + for func in [curses.cbreak, curses.def_prog_mode, + curses.nocbreak, curses.noraw, + curses.reset_prog_mode]: + with self.subTest(func=func.__qualname__): + func() + for func in [curses.baudrate, curses.beep, curses.can_change_color, - curses.cbreak, curses.def_prog_mode, curses.doupdate, + curses.doupdate, curses.filter, curses.flash, curses.flushinp, curses.has_colors, curses.has_ic, curses.has_il, curses.isendwin, curses.killchar, curses.longname, - curses.nocbreak, curses.noecho, curses.nonl, - curses.noqiflush, curses.noraw, - curses.reset_prog_mode, curses.termattrs, + curses.noecho, curses.nonl, curses.noqiflush, + curses.termattrs, curses.termname, curses.erasechar, curses.getsyx]: with self.subTest(func=func.__qualname__): func() @@ -214,16 +229,20 @@ class TestCurses(unittest.TestCase): curses.getwin(f) curses.halfdelay(1) - curses.intrflush(1) + if self.isatty: + curses.intrflush(1) curses.meta(1) curses.napms(100) curses.newpad(50,50) win = curses.newwin(5,5) win = curses.newwin(5,5, 1,1) curses.nl() ; curses.nl(1) - curses.putp(b'abc') + if self.isatty: # breaks regrtest with -jN + curses.putp(b'abc') curses.qiflush() - curses.raw() ; curses.raw(1) + if self.isatty: + curses.raw() + curses.raw(1) curses.setsyx(5,5) curses.tigetflag('hc') curses.tigetnum('co')