dabeaz / curio

Good Curio!
Other
4.01k stars 240 forks source link

Python 3.6 pytest failures #336

Open bnavigator opened 3 years ago

bnavigator commented 3 years ago

I see you reverted the minimum python requirement to 3.6 in 1ea5653

But unit tests fail with python 3.6:


[   23s] + PYTHONPATH=/home/abuild/rpmbuild/BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages
[   23s] + PYTHONDONTWRITEBYTECODE=1
[   23s] + pytest-3.6 --ignore=_build.python36 --ignore=_build.python38 -v -k 'not (test_ssl_outgoing or test_socket_funcs)'
[   24s] ============================= test session starts ==============================
[   24s] platform linux -- Python 3.6.12, pytest-6.1.2, py-1.9.0, pluggy-0.13.1 -- /usr/bin/python3.6
[   24s] cachedir: .pytest_cache
[   24s] rootdir: /home/abuild/rpmbuild/BUILD/curio-1.4, configfile: setup.cfg, testpaths: tests
[   25s] collecting ... collected 259 items / 2 deselected / 257 selected
...
[  124s] =================================== FAILURES ===================================
[  124s] _________________________ test_uqueue_asyncio_consumer _________________________
[  124s] 
[  124s] kernel = <curio.kernel.Kernel object at 0x7fab5ad17550>
[  124s] 
[  124s]     def test_uqueue_asyncio_consumer(kernel):
[  124s]         results = []
[  124s]         async def consumer(queue):
[  124s]             while True:
[  124s]                 item = await queue.get()
[  124s]                 await queue.task_done()
[  124s]                 if item is None:
[  124s]                     break
[  124s]                 results.append(item)
[  124s]     
[  124s]         async def producer(queue):
[  124s]             for n in range(10):
[  124s]                 await queue.put(n)
[  124s]             await queue.put(None)
[  124s]             await queue.join()
[  124s]     
[  124s]         queue = UniversalQueue(maxsize=2)
[  124s] >       t1 = threading.Thread(target=asyncio.run, args=[consumer(queue)])
[  124s] E       AttributeError: module 'asyncio' has no attribute 'run'
[  124s] 
[  124s] tests/test_queue.py:543: AttributeError
[  124s] ________________ TestUniversalEvent.test_uevent_get_asyncio_set ________________
[  124s] 
[  124s] self = <test_sync.TestUniversalEvent object at 0x7fab5aee79e8>
[  124s] kernel = <curio.kernel.Kernel object at 0x7fab5ad17550>
[  124s] 
[  124s]     def test_uevent_get_asyncio_set(self, kernel):
[  124s]         results = []
[  124s]         async def event_setter(evt, seconds):
[  124s]             await asyncio.sleep(seconds)
[  124s]             results.append('event_set')
[  124s]             await evt.set()
[  124s]     
[  124s]         async def event_waiter(evt):
[  124s]             results.append('wait_start')
[  124s]             results.append(evt.is_set())
[  124s]             await evt.wait()
[  124s]             results.append('wait_done')
[  124s]             results.append(evt.is_set())
[  124s]             evt.clear()
[  124s]             results.append(evt.is_set())
[  124s]     
[  124s]         async def main():
[  124s]             evt = UniversalEvent()
[  124s]             t1 = await spawn(event_waiter, evt)
[  124s]             await sleep(0.05)
[  124s]             t2 = threading.Thread(target=asyncio.run, args=[event_setter(evt, 1)])
[  124s]             t2.start()
[  124s]             await t1.join()
[  124s]             await run_in_thread(t2.join)
[  124s]     
[  124s] >       kernel.run(main())
[  124s] 
[  124s] tests/test_sync.py:792: 
[  124s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  124s] ../../BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/kernel.py:173: in run
[  124s]     raise ret_exc
[  124s] ../../BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/kernel.py:737: in kernel_run
[  124s]     trap = current.send(current._trap_result)
[  124s] ../../BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/task.py:167: in send
[  124s]     return self._send(value)
[  124s] ../../BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/task.py:171: in _task_runner
[  124s]     return await coro
[  124s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  124s] 
[  124s]     async def main():
[  124s]         evt = UniversalEvent()
[  124s]         t1 = await spawn(event_waiter, evt)
[  124s]         await sleep(0.05)
[  124s] >       t2 = threading.Thread(target=asyncio.run, args=[event_setter(evt, 1)])
[  124s] E       AttributeError: module 'asyncio' has no attribute 'run'
[  124s] 
[  124s] tests/test_sync.py:787: AttributeError
[  124s] ------------------------------ Captured log call -------------------------------
[  124s] ERROR    curio.debug:debug.py:55 Task(id=489, name='TestUniversalEvent.test_uevent_get_asyncio_set.<locals>.main', state='TERMINATED') crashed
[  124s] Traceback (most recent call last):
[  124s]   File "/home/abuild/rpmbuild/BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/kernel.py", line 737, in kernel_run
[  124s]     trap = current.send(current._trap_result)
[  124s]   File "/home/abuild/rpmbuild/BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/task.py", line 167, in send
[  124s]     return self._send(value)
[  124s]   File "/home/abuild/rpmbuild/BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/task.py", line 171, in _task_runner
[  124s]     return await coro
[  124s]   File "/home/abuild/rpmbuild/BUILD/curio-1.4/tests/test_sync.py", line 787, in main
[  124s]     t2 = threading.Thread(target=asyncio.run, args=[event_setter(evt, 1)])
[  124s] AttributeError: module 'asyncio' has no attribute 'run'
[  124s] _______________ TestUniversalEvent.test_uevent_get_asyncio_wait ________________
[  124s] 
[  124s] self = <test_sync.TestUniversalEvent object at 0x7fab5ae53f28>
[  124s] kernel = <curio.kernel.Kernel object at 0x7fab5ad17550>
[  124s] 
[  124s]     def test_uevent_get_asyncio_wait(self, kernel):
[  124s]         results = []
[  124s]         async def event_setter(evt, seconds):
[  124s]             results.append('sleep')
[  124s]             await sleep(seconds)
[  124s]             results.append('event_set')
[  124s]             await evt.set()
[  124s]     
[  124s]         async def event_waiter(evt):
[  124s]             results.append('wait_start')
[  124s]             results.append(evt.is_set())
[  124s]             await evt.wait()
[  124s]             results.append('wait_done')
[  124s]             results.append(evt.is_set())
[  124s]             evt.clear()
[  124s]             results.append(evt.is_set())
[  124s]     
[  124s]         async def main():
[  124s]             evt = UniversalEvent()
[  124s]             t1 = threading.Thread(target=asyncio.run, args=[event_waiter(evt)])
[  124s]             t1.start()
[  124s]             await sleep(0.1)
[  124s]             t2 = await spawn(event_setter, evt, 1)
[  124s]             await run_in_thread(t1.join)
[  124s]             await t2.join()
[  124s]     
[  124s] >       kernel.run(main())
[  124s] 
[  124s] tests/test_sync.py:829: 
[  124s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  124s] ../../BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/kernel.py:173: in run
[  124s]     raise ret_exc
[  124s] ../../BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/kernel.py:737: in kernel_run
[  124s]     trap = current.send(current._trap_result)
[  124s] ../../BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/task.py:167: in send
[  124s]     return self._send(value)
[  124s] ../../BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/task.py:171: in _task_runner
[  124s]     return await coro
[  124s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  124s] 
[  124s]     async def main():
[  124s]         evt = UniversalEvent()
[  124s] >       t1 = threading.Thread(target=asyncio.run, args=[event_waiter(evt)])
[  124s] E       AttributeError: module 'asyncio' has no attribute 'run'
[  124s] 
[  124s] tests/test_sync.py:822: AttributeError
[  124s] ------------------------------ Captured log call -------------------------------
[  124s] ERROR    curio.debug:debug.py:55 Task(id=491, name='TestUniversalEvent.test_uevent_get_asyncio_wait.<locals>.main', state='TERMINATED') crashed
[  124s] Traceback (most recent call last):
[  124s]   File "/home/abuild/rpmbuild/BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/kernel.py", line 737, in kernel_run
[  124s]     trap = current.send(current._trap_result)
[  124s]   File "/home/abuild/rpmbuild/BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/task.py", line 167, in send
[  124s]     return self._send(value)
[  124s]   File "/home/abuild/rpmbuild/BUILDROOT/python-curio-1.4-21.1.x86_64/usr/lib/python3.6/site-packages/curio/task.py", line 171, in _task_runner
[  124s]     return await coro
[  124s]   File "/home/abuild/rpmbuild/BUILD/curio-1.4/tests/test_sync.py", line 822, in main
[  124s]     t1 = threading.Thread(target=asyncio.run, args=[event_waiter(evt)])
[  124s] AttributeError: module 'asyncio' has no attribute 'run'
[  124s] ___________________ TestUniversalResult.test_universal_value ___________________
[  124s] 
[  124s] self = <test_sync.TestUniversalResult object at 0x7fab589e98d0>
[  124s] kernel = <curio.kernel.Kernel object at 0x7fab5ad17550>
[  124s] 
[  124s]     def test_universal_value(self, kernel):
[  124s]     
[  124s]         def work(x, y, r):
[  124s]             r.set_value(x+y)
[  124s]     
[  124s]         async def main(r1, r2):
[  124s]             value = await r1.unwrap()
[  124s]             await r2.set_value(value)
[  124s]     
[  124s]         r1 = UniversalResult()
[  124s]         r2 = UniversalResult()
[  124s]         r3 = UniversalResult()
[  124s]         threading.Thread(target=work, args=[2,3,r1]).start()
[  124s] >       threading.Thread(target=asyncio.run, args=[main(r1, r2)]).start()
[  124s] E       AttributeError: module 'asyncio' has no attribute 'run'
[  124s] 
[  124s] tests/test_sync.py:883: AttributeError
[  124s] ___________________ TestUniversalResult.test_universal_error ___________________
[  124s] 
[  124s] self = <test_sync.TestUniversalResult object at 0x7fab5af3be80>
[  124s] kernel = <curio.kernel.Kernel object at 0x7fab5ad17550>
[  124s] 
[  124s]     def test_universal_error(self, kernel):
[  124s]     
[  124s]         def work(x, y, r):
[  124s]             try:
[  124s]                 r.set_value(x+y)
[  124s]             except Exception as err:
[  124s]                 r.set_exception(err)
[  124s]     
[  124s]         async def main(r1, r2):
[  124s]             try:
[  124s]                 value = await r1.unwrap()
[  124s]                 await r2.set_value(value)
[  124s]             except Exception as err:
[  124s]                 await r2.set_exception(err)
[  124s]     
[  124s]         r1 = UniversalResult()
[  124s]         r2 = UniversalResult()
[  124s]         r3 = UniversalResult()
[  124s]         threading.Thread(target=work, args=[2,"3",r1]).start()
[  124s] >       threading.Thread(target=asyncio.run, args=[main(r1, r2)]).start()
[  124s] E       AttributeError: module 'asyncio' has no attribute 'run'
[  124s] 
[  124s] tests/test_sync.py:906: AttributeError
[  124s] _______________________________ test_contextvars _______________________________
[  124s] 
[  124s]     def test_contextvars():
[  124s] >       import contextvars
[  124s] E       ModuleNotFoundError: No module named 'contextvars'
[  124s] 
[  124s] tests/test_task.py:573: ModuleNotFoundError
[  124s] =============================== warnings summary ===============================
[  124s] tests/test_file.py::test_sync_with
[  124s]   /home/abuild/rpmbuild/BUILD/curio-1.4/tests/test_file.py:224: RuntimeWarning: coroutine 'AsyncFile.__aenter__' was never awaited
[  124s]     assert True
[  124s] 
[  124s] tests/test_io.py::test_stream_bad_context
[  124s]   /home/abuild/rpmbuild/BUILD/curio-1.4/tests/test_io.py:849: RuntimeWarning: coroutine 'StreamBase.__aenter__' was never awaited
[  124s]     results.append(True)
[  124s] 
[  124s] tests/test_io.py::test_stream_bad_iter
[  124s]   /home/abuild/rpmbuild/BUILD/curio-1.4/tests/test_io.py:882: RuntimeWarning: coroutine 'StreamBase.__anext__' was never awaited
[  124s]     results.append(True)
[  124s] 
[  124s] tests/test_kernel.py::test_reentrant_kernel
[  124s]   /home/abuild/rpmbuild/BUILD/curio-1.4/tests/test_kernel.py:727: RuntimeWarning: coroutine 'child' was never awaited
[  124s]     kernel.run(child)
[  124s] 
[  124s] tests/test_meta.py::test_instantiate_coroutine
[  124s]   /usr/lib/python3.6/site-packages/_pytest/python.py:184: RuntimeWarning: coroutine 'test_instantiate_coroutine.<locals>.coro' was never awaited
[  124s]     result = testfunction(**testargs)
[  124s] 
[  124s] tests/test_meta.py::test_instantiate_coroutine
[  124s]   /usr/lib/python3.6/site-packages/_pytest/python.py:184: RuntimeWarning: coroutine 'coro' was never awaited
[  124s]     result = testfunction(**testargs)
[  124s] 
[  124s] tests/test_thread.py::test_errors
[  124s]   /home/abuild/rpmbuild/BUILD/curio-1.4/tests/test_thread.py:267: RuntimeWarning: coroutine 'simple_coro' was never awaited
[  124s]     AWAIT(simple_coro(2,3))
[  124s] 
[  124s] -- Docs: https://docs.pytest.org/en/stable/warnings.html
[  124s] =========================== short test summary info ============================
[  124s] FAILED tests/test_queue.py::test_uqueue_asyncio_consumer - AttributeError: mo...
[  124s] FAILED tests/test_sync.py::TestUniversalEvent::test_uevent_get_asyncio_set - ...
[  124s] FAILED tests/test_sync.py::TestUniversalEvent::test_uevent_get_asyncio_wait
[  124s] FAILED tests/test_sync.py::TestUniversalResult::test_universal_value - Attrib...
[  124s] FAILED tests/test_sync.py::TestUniversalResult::test_universal_error - Attrib...
[  124s] FAILED tests/test_task.py::test_contextvars - ModuleNotFoundError: No module ...
[  124s] = 6 failed, 248 passed, 3 skipped, 2 deselected, 7 warnings in 100.30s (0:01:40) =
[  124s] error: Bad exit status from /var/tmp/rpm-tmp.nwjOMr (%check)