summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Schubert <brianm.schubert@gmail.com>2024-02-17 16:42:57 (GMT)
committerGitHub <noreply@github.com>2024-02-17 16:42:57 (GMT)
commit90dd653a6122a6c5b4b1fe5abe773c4751e5ca25 (patch)
tree9550ca6b182cc4b121688ea998bc8d2caf1850c9
parent437924465de5cb81988d1e580797b07090c26a28 (diff)
downloadcpython-90dd653a6122a6c5b4b1fe5abe773c4751e5ca25.zip
cpython-90dd653a6122a6c5b4b1fe5abe773c4751e5ca25.tar.gz
cpython-90dd653a6122a6c5b4b1fe5abe773c4751e5ca25.tar.bz2
gh-115596: Fix ProgramPriorityTests in test_os permanently changing the process priority (GH-115610)
-rw-r--r--Lib/test/test_os.py31
-rw-r--r--Misc/NEWS.d/next/Tests/2024-02-17-08-25-01.gh-issue-115596.RGPCrR.rst2
2 files changed, 17 insertions, 16 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index ce77849..2372ac4 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -3506,23 +3506,22 @@ class ProgramPriorityTests(unittest.TestCase):
"""Tests for os.getpriority() and os.setpriority()."""
def test_set_get_priority(self):
-
base = os.getpriority(os.PRIO_PROCESS, os.getpid())
- os.setpriority(os.PRIO_PROCESS, os.getpid(), base + 1)
- try:
- new_prio = os.getpriority(os.PRIO_PROCESS, os.getpid())
- # nice value cap is 19 for linux and 20 for FreeBSD
- if base >= 19 and new_prio <= base:
- raise unittest.SkipTest("unable to reliably test setpriority "
- "at current nice level of %s" % base)
- else:
- self.assertEqual(new_prio, base + 1)
- finally:
- try:
- os.setpriority(os.PRIO_PROCESS, os.getpid(), base)
- except OSError as err:
- if err.errno != errno.EACCES:
- raise
+ code = f"""if 1:
+ import os
+ os.setpriority(os.PRIO_PROCESS, os.getpid(), {base} + 1)
+ print(os.getpriority(os.PRIO_PROCESS, os.getpid()))
+ """
+
+ # Subprocess inherits the current process' priority.
+ _, out, _ = assert_python_ok("-c", code)
+ new_prio = int(out)
+ # nice value cap is 19 for linux and 20 for FreeBSD
+ if base >= 19 and new_prio <= base:
+ raise unittest.SkipTest("unable to reliably test setpriority "
+ "at current nice level of %s" % base)
+ else:
+ self.assertEqual(new_prio, base + 1)
@unittest.skipUnless(hasattr(os, 'sendfile'), "test needs os.sendfile()")
diff --git a/Misc/NEWS.d/next/Tests/2024-02-17-08-25-01.gh-issue-115596.RGPCrR.rst b/Misc/NEWS.d/next/Tests/2024-02-17-08-25-01.gh-issue-115596.RGPCrR.rst
new file mode 100644
index 0000000..2bcb8b9
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2024-02-17-08-25-01.gh-issue-115596.RGPCrR.rst
@@ -0,0 +1,2 @@
+Fix ``ProgramPriorityTests`` in ``test_os`` permanently changing the process
+priority.