Message333179
On 07/01/2019 15:46, STINNER Victor wrote:
> STINNER Victor <vstinner@redhat.com> added the comment:
>
> Since you are getting indentation error, I'm not sure about your test. Can you please apply the patch below and run again test_eintr? Does it still fail with PermissionError?
I was clearly a bit blind.. Now with:
+490 class FNTLEINTRTest(EINTRBaseTest):
+491 def _lock(self, lock_func, lock_name):
+492 self.addCleanup(support.unlink, support.TESTFN)
+493 code = '\n'.join((
+494 "import fcntl, time",
+495 "with open('%s', 'w+b') as f:" % support.TESTFN,
+496 " fcntl.%s(f, fcntl.LOCK_EX)" % lock_name,
+497 " time.sleep(%s)" % self.sleep_time))
+498 start_time = time.monotonic()
+499 proc = self.subprocess(code)
+500 with kill_on_error(proc):
+501 with open(support.TESTFN, 'w+b') as f:
+502 while True: # synchronize the subprocess
+503 dt = time.monotonic() - start_time
+504 if dt > 60.0:
+505 raise Exception("failed to sync child in
%.1f sec" % dt)
+506 try:
+507 lock_func(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
+508 lock_func(f, fcntl.LOCK_UN)
+509 time.sleep(0.01)
+510 except BlockingIOError:
+511 break
I get - PermissionError - as before.
root@x066:[/data/prj/python/python3-3.8]./python -m test -v test_eintr
== CPython 3.8.0a0 (heads/master-dirty:b4ea8bb080, Jan 1 2019, 18:24:36) [C]
== AIX-1-00C291F54C00-powerpc-32bit big-endian
== cwd: /data/prj/python/python3-3.8/build/test_python_3342514
== CPU count: 8
== encodings: locale=ISO8859-1, FS=iso8859-1
Run tests sequentially
0:00:00 [1/1] test_eintr
test_all (test.test_eintr.EINTRTests) ...
--- run eintr_tester.py ---
test_flock (__main__.FNTLEINTRTest) ... ok
test_lockf (__main__.FNTLEINTRTest) ... ERROR
test_read (__main__.OSEINTRTest) ... ok
test_wait (__main__.OSEINTRTest) ... ok
test_wait3 (__main__.OSEINTRTest) ... ok
test_wait4 (__main__.OSEINTRTest) ... ok
test_waitpid (__main__.OSEINTRTest) ... ok
test_write (__main__.OSEINTRTest) ... ok
test_devpoll (__main__.SelectEINTRTest) ... skipped 'need select.devpoll'
test_epoll (__main__.SelectEINTRTest) ... skipped 'need select.epoll'
test_kqueue (__main__.SelectEINTRTest) ... skipped 'need select.kqueue'
test_poll (__main__.SelectEINTRTest) ... ok
test_select (__main__.SelectEINTRTest) ... ok
test_sigtimedwait (__main__.SignalEINTRTest) ... ok
test_sigwaitinfo (__main__.SignalEINTRTest) ... ok
test_accept (__main__.SocketEINTRTest) ... ok
test_open (__main__.SocketEINTRTest) ... ok
test_os_open (__main__.SocketEINTRTest) ... ok
test_recv (__main__.SocketEINTRTest) ... ok
test_recvmsg (__main__.SocketEINTRTest) ... ok
test_send (__main__.SocketEINTRTest) ... ok
test_sendall (__main__.SocketEINTRTest) ... ok
test_sendmsg (__main__.SocketEINTRTest) ... ok
test_sleep (__main__.TimeEINTRTest) ... ok
======================================================================
ERROR: test_lockf (__main__.FNTLEINTRTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File
"/data/prj/python/git/python3-3.8/Lib/test/eintrdata/eintr_tester.py",
line 522, in test_lockf
self._lock(fcntl.lockf, "lockf")
File
"/data/prj/python/git/python3-3.8/Lib/test/eintrdata/eintr_tester.py",
line 507, in _lock
lock_func(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
PermissionError: [Errno 13] Permission denied
----------------------------------------------------------------------
Ran 24 tests in 9.098s
FAILED (errors=1, skipped=3)
--- eintr_tester.py completed: exit code 1 ---
FAIL
======================================================================
FAIL: test_all (test.test_eintr.EINTRTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/data/prj/python/git/python3-3.8/Lib/test/test_eintr.py", line
31, in test_all
self.fail("eintr_tester.py failed")
AssertionError: eintr_tester.py failed
----------------------------------------------------------------------
Ran 1 test in 9.674s
FAILED (failures=1)
test test_eintr failed
test_eintr failed
== Tests result: FAILURE ==
>
> diff --git a/Lib/test/eintrdata/eintr_tester.py b/Lib/test/eintrdata/eintr_tester.py
> index 25c169bde5..4db5dc9045 100644
> --- a/Lib/test/eintrdata/eintr_tester.py
> +++ b/Lib/test/eintrdata/eintr_tester.py
> @@ -492,13 +492,13 @@ class FNTLEINTRTest(EINTRBaseTest):
> self.addCleanup(support.unlink, support.TESTFN)
> code = '\n'.join((
> "import fcntl, time",
> - "with open('%s', 'wb') as f:" % support.TESTFN,
> + "with open('%s', 'w+b') as f:" % support.TESTFN,
> " fcntl.%s(f, fcntl.LOCK_EX)" % lock_name,
> " time.sleep(%s)" % self.sleep_time))
> start_time = time.monotonic()
> proc = self.subprocess(code)
> with kill_on_error(proc):
> - with open(support.TESTFN, 'wb') as f:
> + with open(support.TESTFN, 'w+b') as f:
> while True: # synchronize the subprocess
> dt = time.monotonic() - start_time
> if dt > 60.0:
>
> ----------
>
> _______________________________________
> Python tracker <report@bugs.python.org>
> <https://bugs.python.org/issue35633>
> _______________________________________
> |
|
Date |
User |
Action |
Args |
2019-01-07 17:44:28 | Michael.Felt | set | recipients:
+ Michael.Felt, vstinner |
2019-01-07 17:44:27 | Michael.Felt | link | issue35633 messages |
2019-01-07 17:44:27 | Michael.Felt | create | |
|