]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Make test_fcntl quiet (#108758)
authorVictor Stinner <vstinner@python.org>
Fri, 1 Sep 2023 12:59:09 +0000 (14:59 +0200)
committerGitHub <noreply@github.com>
Fri, 1 Sep 2023 12:59:09 +0000 (14:59 +0200)
Running test_fcntl logs two "struct.pack: ..." lines because
multiprocessing imports test_fcntl twice with
test.support.verbose=1. Move get_lockdata() inside TestFcntl test
case and only call it where it's needed, to stop logging these lines.

Lib/test/test_fcntl.py

index 5da75615b41d79760e2971a5b06d0c8107a8dbad..203dd6fe57dcd9933bba39a0ff2c2df473c88285 100644 (file)
@@ -16,37 +16,6 @@ fcntl = import_module('fcntl')
 
 
 
-def get_lockdata():
-    try:
-        os.O_LARGEFILE
-    except AttributeError:
-        start_len = "ll"
-    else:
-        start_len = "qq"
-
-    if (sys.platform.startswith(('netbsd', 'freebsd', 'openbsd'))
-        or sys.platform == 'darwin'):
-        if struct.calcsize('l') == 8:
-            off_t = 'l'
-            pid_t = 'i'
-        else:
-            off_t = 'lxxxx'
-            pid_t = 'l'
-        lockdata = struct.pack(off_t + off_t + pid_t + 'hh', 0, 0, 0,
-                               fcntl.F_WRLCK, 0)
-    elif sys.platform.startswith('gnukfreebsd'):
-        lockdata = struct.pack('qqihhi', 0, 0, 0, fcntl.F_WRLCK, 0, 0)
-    elif sys.platform in ['hp-uxB', 'unixware7']:
-        lockdata = struct.pack('hhlllii', fcntl.F_WRLCK, 0, 0, 0, 0, 0, 0)
-    else:
-        lockdata = struct.pack('hh'+start_len+'hh', fcntl.F_WRLCK, 0, 0, 0, 0, 0)
-    if lockdata:
-        if verbose:
-            print('struct.pack: ', repr(lockdata))
-    return lockdata
-
-lockdata = get_lockdata()
-
 class BadFile:
     def __init__(self, fn):
         self.fn = fn
@@ -78,12 +47,43 @@ class TestFcntl(unittest.TestCase):
             self.f.close()
         unlink(TESTFN)
 
+    @staticmethod
+    def get_lockdata():
+        try:
+            os.O_LARGEFILE
+        except AttributeError:
+            start_len = "ll"
+        else:
+            start_len = "qq"
+
+        if (sys.platform.startswith(('netbsd', 'freebsd', 'openbsd'))
+            or sys.platform == 'darwin'):
+            if struct.calcsize('l') == 8:
+                off_t = 'l'
+                pid_t = 'i'
+            else:
+                off_t = 'lxxxx'
+                pid_t = 'l'
+            lockdata = struct.pack(off_t + off_t + pid_t + 'hh', 0, 0, 0,
+                                   fcntl.F_WRLCK, 0)
+        elif sys.platform.startswith('gnukfreebsd'):
+            lockdata = struct.pack('qqihhi', 0, 0, 0, fcntl.F_WRLCK, 0, 0)
+        elif sys.platform in ['hp-uxB', 'unixware7']:
+            lockdata = struct.pack('hhlllii', fcntl.F_WRLCK, 0, 0, 0, 0, 0, 0)
+        else:
+            lockdata = struct.pack('hh'+start_len+'hh', fcntl.F_WRLCK, 0, 0, 0, 0, 0)
+        if lockdata:
+            if verbose:
+                print('struct.pack: ', repr(lockdata))
+        return lockdata
+
     def test_fcntl_fileno(self):
         # the example from the library docs
         self.f = open(TESTFN, 'wb')
         rv = fcntl.fcntl(self.f.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
         if verbose:
             print('Status from fcntl with O_NONBLOCK: ', rv)
+        lockdata = self.get_lockdata()
         rv = fcntl.fcntl(self.f.fileno(), fcntl.F_SETLKW, lockdata)
         if verbose:
             print('String from fcntl with F_SETLKW: ', repr(rv))
@@ -95,6 +95,7 @@ class TestFcntl(unittest.TestCase):
         rv = fcntl.fcntl(self.f, fcntl.F_SETFL, os.O_NONBLOCK)
         if verbose:
             print('Status from fcntl with O_NONBLOCK: ', rv)
+        lockdata = self.get_lockdata()
         rv = fcntl.fcntl(self.f, fcntl.F_SETLKW, lockdata)
         if verbose:
             print('String from fcntl with F_SETLKW: ', repr(rv))