gnu: python-pytest-asyncio: Enable tests and patch for Python 3.8.

* gnu/packages/patches/python-pytest-asyncio-python-3.8.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/check.scm (python-pytest-asyncio)
[source]: Fetch from git and apply above patch.
[phases]: Override the check phase, enabling tests.
This commit is contained in:
Maxim Cournoyer 2021-08-26 09:50:14 -04:00
parent 0a2c8b10fc
commit b1ef8b410c
No known key found for this signature in database
GPG key ID: 1260E46482E63562
3 changed files with 257 additions and 3 deletions

View file

@ -1657,6 +1657,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-pydot-regression-test.patch \
%D%/packages/patches/python2-pygobject-2-deprecation.patch \
%D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \
%D%/packages/patches/python-pytest-asyncio-python-3.8.patch \
%D%/packages/patches/python-pytorch-runpath.patch \
%D%/packages/patches/python-pytorch-system-libraries.patch \
%D%/packages/patches/python-robotframework-source-date-epoch.patch \

View file

@ -1730,14 +1730,29 @@ (define-public python2-coverage
(define-public python-pytest-asyncio
(package
(name "python-pytest-asyncio")
;; Version 0.10.0 is the last version which is compatible with Pytest <=
;; 5.4.0.
(version "0.10.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytest-asyncio" version))
(method git-fetch) ;for tests
(uri (git-reference
(url "https://github.com/pytest-dev/pytest-asyncio")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1bysy4nii13bm7h345wxf8fxcjhab7l374pqdv7vwv3izl053b4z"))))
(base32
"1m63b7nbph5z20mn8jgh6j9ac873i1k4in29x44vrkw3qwfwg13y"))
(patches (search-patches "python-pytest-asyncio-python-3.8.patch"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
(when tests?
(add-installed-pythonpath inputs outputs)
(invoke "pytest" "-vv")))))))
(native-inputs
`(("python-coverage" ,python-coverage)
("python-async-generator" ,python-async-generator)

View file

@ -0,0 +1,238 @@
# Modified to apply on 0.10.0.
From c7a111180b3f35f2fe5a07ead185e4e792f9dfa0 Mon Sep 17 00:00:00 2001
From: Andrew Svetlov <andrew.svetlov@gmail.com>
Date: Thu, 9 Apr 2020 08:44:46 +0200
Subject: [PATCH] Test on Python 3.8, drop 3.3 and 3.4
---
.travis.yml | 7 +++---
setup.py | 1 +
tests/conftest.py | 2 +-
tests/test_hypothesis_integration.py | 2 +-
tests/test_simple.py | 32 +++++++++++-----------------
tests/test_simple_35.py | 17 ++++++---------
tests/test_subprocess.py | 6 ++----
tox.ini | 5 +++--
8 files changed, 29 insertions(+), 43 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index fe90234..b93377a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,5 @@
language: python
+
matrix:
include:
- python: 3.5
@@ -7,10 +8,8 @@ matrix:
env: TOX_ENV=py36
- python: 3.7
env: TOX_ENV=py37
- # TODO: the dist and sudo keys are currently needed to use Python 3.7.
- # They should be removed once Travis-CI supports 3.7 on the default image.
- dist: xenial
- sudo: true
+ - python: 3.8
+ env: TOX_ENV=py38
install: pip install tox-travis coveralls
diff --git a/setup.py b/setup.py
index 18566bf..6175711 100644
--- a/setup.py
+++ b/setup.py
@@ -36,6 +36,7 @@ def find_version():
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
"Topic :: Software Development :: Testing",
"Framework :: Pytest",
],
diff --git a/tests/conftest.py b/tests/conftest.py
index 6203cf8..cc2ec16 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -17,7 +17,7 @@ def dependent_fixture(event_loop):
async def just_a_sleep():
"""Just sleep a little while."""
nonlocal event_loop
- await asyncio.sleep(0.1, loop=event_loop)
+ await asyncio.sleep(0.1)
nonlocal counter
counter += 1
diff --git a/tests/test_simple.py b/tests/test_simple.py
index 1627139..00c07fc 100644
--- a/tests/test_simple.py
+++ b/tests/test_simple.py
@@ -1,28 +1,26 @@
"""Quick'n'dirty unit tests for provided fixtures and markers."""
import asyncio
-import os
import pytest
import pytest_asyncio.plugin
-async def async_coro(loop=None):
- """A very simple coroutine."""
- await asyncio.sleep(0, loop=loop)
+async def async_coro():
+ await asyncio.sleep(0)
return 'ok'
def test_event_loop_fixture(event_loop):
"""Test the injection of the event_loop fixture."""
assert event_loop
- ret = event_loop.run_until_complete(async_coro(event_loop))
+ ret = event_loop.run_until_complete(async_coro())
assert ret == 'ok'
@pytest.mark.asyncio
-def test_asyncio_marker():
+async def test_asyncio_marker():
"""Test the asyncio pytest marker."""
- yield # sleep(0)
+ await asyncio.sleep(0)
@pytest.mark.xfail(reason='need a failure', strict=True)
@@ -45,13 +43,11 @@ async def closer(_, writer):
writer.close()
server1 = await asyncio.start_server(closer, host='localhost',
- port=unused_tcp_port,
- loop=event_loop)
+ port=unused_tcp_port)
with pytest.raises(IOError):
await asyncio.start_server(closer, host='localhost',
- port=unused_tcp_port,
- loop=event_loop)
+ port=unused_tcp_port)
server1.close()
await server1.wait_closed()
@@ -68,20 +64,16 @@ async def closer(_, writer):
unused_tcp_port_factory())
server1 = await asyncio.start_server(closer, host='localhost',
- port=port1,
- loop=event_loop)
+ port=port1)
server2 = await asyncio.start_server(closer, host='localhost',
- port=port2,
- loop=event_loop)
+ port=port2)
server3 = await asyncio.start_server(closer, host='localhost',
- port=port3,
- loop=event_loop)
+ port=port3)
for port in port1, port2, port3:
with pytest.raises(IOError):
await asyncio.start_server(closer, host='localhost',
- port=port,
- loop=event_loop)
+ port=port)
server1.close()
await server1.wait_closed()
@@ -117,7 +109,7 @@ class Test:
@pytest.mark.asyncio
async def test_asyncio_marker_method(self, event_loop):
"""Test the asyncio pytest marker in a Test class."""
- ret = await async_coro(event_loop)
+ ret = await async_coro()
assert ret == 'ok'
diff --git a/tests/test_simple_35.py b/tests/test_simple_35.py
index 1e4d697..4141fb0 100644
--- a/tests/test_simple_35.py
+++ b/tests/test_simple_35.py
@@ -6,7 +6,7 @@
@pytest.mark.asyncio
async def async_coro(loop):
- await asyncio.sleep(0, loop=loop)
+ await asyncio.sleep(0)
return 'ok'
@@ -27,8 +27,7 @@ async def closer(_, writer):
writer.close()
server1 = await asyncio.start_server(closer, host='localhost',
- port=unused_tcp_port,
- loop=event_loop)
+ port=unused_tcp_port)
server1.close()
await server1.wait_closed()
@@ -45,20 +44,16 @@ async def closer(_, writer):
async def run_test():
server1 = await asyncio.start_server(closer, host='localhost',
- port=port1,
- loop=event_loop)
+ port=port1)
server2 = await asyncio.start_server(closer, host='localhost',
- port=port2,
- loop=event_loop)
+ port=port2)
server3 = await asyncio.start_server(closer, host='localhost',
- port=port3,
- loop=event_loop)
+ port=port3)
for port in port1, port2, port3:
with pytest.raises(IOError):
await asyncio.start_server(closer, host='localhost',
- port=port,
- loop=event_loop)
+ port=port)
server1.close()
await server1.wait_closed()
diff --git a/tests/test_subprocess.py b/tests/test_subprocess.py
index 83490e8..069c6c2 100644
--- a/tests/test_subprocess.py
+++ b/tests/test_subprocess.py
@@ -21,8 +21,7 @@ def event_loop():
async def test_subprocess(event_loop):
"""Starting a subprocess should be possible."""
proc = await asyncio.subprocess.create_subprocess_exec(
- sys.executable, '--version', stdout=asyncio.subprocess.PIPE,
- loop=event_loop)
+ sys.executable, '--version', stdout=asyncio.subprocess.PIPE)
await proc.communicate()
@@ -30,6 +29,5 @@ async def test_subprocess(event_loop):
async def test_subprocess_forbid(event_loop):
"""Starting a subprocess should be possible."""
proc = await asyncio.subprocess.create_subprocess_exec(
- sys.executable, '--version', stdout=asyncio.subprocess.PIPE,
- loop=event_loop)
+ sys.executable, '--version', stdout=asyncio.subprocess.PIPE)
await proc.communicate()
diff --git a/tox.ini b/tox.ini
index 13d5155..eed6fb6 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,6 +1,7 @@
[tox]
-envlist = py35, py36, py37
-minversion = 2.5.0
+minversion = 3.14.0
+envlist = py35, py36, py37, py38
+skip_missing_interpreters = true
[testenv]
extras = testing