]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-115596: Fix ProgramPriorityTests in test_os permanently changing the proces...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 17 Feb 2024 17:14:26 +0000 (18:14 +0100)
committerGitHub <noreply@github.com>
Sat, 17 Feb 2024 17:14:26 +0000 (19:14 +0200)
(cherry picked from commit 90dd653a6122a6c5b4b1fe5abe773c4751e5ca25)

Co-authored-by: Brian Schubert <brianm.schubert@gmail.com>
Lib/test/test_os.py
Misc/NEWS.d/next/Tests/2024-02-17-08-25-01.gh-issue-115596.RGPCrR.rst [new file with mode: 0644]

index 94e77007e474ea8a4eb717d30b646a85dfc92d9a..67281c7c3562fb2f898da57a2497b2eb6db0849e 100644 (file)
@@ -3485,23 +3485,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 (file)
index 0000000..2bcb8b9
--- /dev/null
@@ -0,0 +1,2 @@
+Fix ``ProgramPriorityTests`` in ``test_os`` permanently changing the process
+priority.