Index: Lib/test/test_select.py =================================================================== --- Lib/test/test_select.py (revisione 60620) +++ Lib/test/test_select.py (copia locale) @@ -1,16 +1,9 @@ # Testing select module -from test.test_support import verbose, reap_children +from test.test_support import verbose, reap_children, TestSkipped, run_unittest import select import os +import unittest -# test some known error conditions -try: - rfd, wfd, xfd = select.select(1, 2, 3) -except TypeError: - pass -else: - print 'expected TypeError exception not raised' - class Nope: pass @@ -18,53 +11,45 @@ def fileno(self): return 'fileno' -try: - rfd, wfd, xfd = select.select([Nope()], [], []) -except TypeError: - pass -else: - print 'expected TypeError exception not raised' +class TestSelect(unittest.TestCase): + + def test_errors(self): + # test some known error conditions + self.assertRaises(TypeError, select.select, 1, 2, 3) + self.assertRaises(TypeError, select.select, [Nope()], [], []) + self.assertRaises(TypeError, select.select, [Almost()], [], []) + self.assertRaises(TypeError, select.select, [], [], [], 'not a number') + + def test_behavior(self): + import sys + if sys.platform in ('win16', 'win32', 'win64', 'mac', 'os2', 'riscos'): + raise TestSkipped("Can't test select easily on " + sys.platform) -try: - rfd, wfd, xfd = select.select([Almost()], [], []) -except TypeError: - pass -else: - print 'expected TypeError exception not raised' - -try: - rfd, wfd, xfd = select.select([], [], [], 'not a number') -except TypeError: - pass -else: - print 'expected TypeError exception not raised' - - -def test(): - import sys - if sys.platform[:3] in ('win', 'mac', 'os2', 'riscos'): - if verbose: - print "Can't test select easily on", sys.platform - return - cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done' - p = os.popen(cmd, 'r') - for tout in (0, 1, 2, 4, 8, 16) + (None,)*10: - if verbose: - print 'timeout =', tout - rfd, wfd, xfd = select.select([p], [], [], tout) - if (rfd, wfd, xfd) == ([], [], []): - continue - if (rfd, wfd, xfd) == ([p], [], []): - line = p.readline() + cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done' + p = os.popen(cmd, 'r') + for tout in (0, 1, 2, 4, 8, 16) + (None,)*10: if verbose: - print repr(line) - if not line: + print 'timeout =', tout + rfd, wfd, xfd = select.select([p], [], [], tout) + if (rfd, wfd, xfd) == ([], [], []): + continue + if (rfd, wfd, xfd) == ([p], [], []): + line = p.readline() if verbose: - print 'EOF' - break - continue - print 'Unexpected return values from select():', rfd, wfd, xfd - p.close() - reap_children() + print repr(line) + if not line: + if verbose: + print 'EOF' + break + continue + self.fail('Unexpected return values from select(): %s %s %s' + %(rfd, wfd, xfd)) + p.close() + reap_children() -test() + +def test_main(): + run_unittest(TestSelect) + +if __name__ == '__main__': + test_main()