Skip to content

Commit 90dd653

Browse files
gh-115596: Fix ProgramPriorityTests in test_os permanently changing the process priority (GH-115610)
1 parent 4379244 commit 90dd653

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

Lib/test/test_os.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3506,23 +3506,22 @@ class ProgramPriorityTests(unittest.TestCase):
35063506
"""Tests for os.getpriority() and os.setpriority()."""
35073507

35083508
def test_set_get_priority(self):
3509-
35103509
base = os.getpriority(os.PRIO_PROCESS, os.getpid())
3511-
os.setpriority(os.PRIO_PROCESS, os.getpid(), base + 1)
3512-
try:
3513-
new_prio = os.getpriority(os.PRIO_PROCESS, os.getpid())
3514-
# nice value cap is 19 for linux and 20 for FreeBSD
3515-
if base >= 19 and new_prio <= base:
3516-
raise unittest.SkipTest("unable to reliably test setpriority "
3517-
"at current nice level of %s" % base)
3518-
else:
3519-
self.assertEqual(new_prio, base + 1)
3520-
finally:
3521-
try:
3522-
os.setpriority(os.PRIO_PROCESS, os.getpid(), base)
3523-
except OSError as err:
3524-
if err.errno != errno.EACCES:
3525-
raise
3510+
code = f"""if 1:
3511+
import os
3512+
os.setpriority(os.PRIO_PROCESS, os.getpid(), {base} + 1)
3513+
print(os.getpriority(os.PRIO_PROCESS, os.getpid()))
3514+
"""
3515+
3516+
# Subprocess inherits the current process' priority.
3517+
_, out, _ = assert_python_ok("-c", code)
3518+
new_prio = int(out)
3519+
# nice value cap is 19 for linux and 20 for FreeBSD
3520+
if base >= 19 and new_prio <= base:
3521+
raise unittest.SkipTest("unable to reliably test setpriority "
3522+
"at current nice level of %s" % base)
3523+
else:
3524+
self.assertEqual(new_prio, base + 1)
35263525

35273526

35283527
@unittest.skipUnless(hasattr(os, 'sendfile'), "test needs os.sendfile()")
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix ``ProgramPriorityTests`` in ``test_os`` permanently changing the process
2+
priority.

0 commit comments

Comments
 (0)