From c78de46912c29a9cca58b90535a31a2656ca6ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Fran=C3=A7ois=20Natali?= Date: Sun, 13 Jan 2013 14:10:37 +0100 Subject: [PATCH] Fix test_posix failure on NetBSD buildbots: sched_setparam() and sched_setscheduler() can fail with EINVAL if the process scheduling policy is neither SCHED_FIFO nor SCHED_RR. --- Lib/test/test_posix.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index 26d55703f89..5843b030399 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -930,17 +930,17 @@ class PosixTester(unittest.TestCase): self.assertRaises(OSError, posix.sched_getparam, -1) param = posix.sched_getparam(0) self.assertIsInstance(param.sched_priority, int) - try: - posix.sched_setscheduler(0, mine, param) - except OSError as e: - if e.errno != errno.EPERM: - raise - # POSIX states that calling sched_setparam() on a process with a - # scheduling policy other than SCHED_FIFO or SCHED_RR is - # implementation-defined: FreeBSD returns EINVAL. - if not sys.platform.startswith('freebsd'): - posix.sched_setparam(0, param) + # POSIX states that calling sched_setparam() or sched_setscheduler() on + # a process with a scheduling policy other than SCHED_FIFO or SCHED_RR + # is implementation-defined: NetBSD and FreeBSD can return EINVAL. + if not sys.platform.startswith(('freebsd', 'netbsd')): + try: + posix.sched_setscheduler(0, mine, param) + posix.sched_setparam(0, param) + except OSError as e: + if e.errno != errno.EPERM: + raise self.assertRaises(OSError, posix.sched_setparam, -1, param) self.assertRaises(OSError, posix.sched_setscheduler, -1, mine, param)