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:
parent
0a2c8b10fc
commit
b1ef8b410c
3 changed files with 257 additions and 3 deletions
|
@ -1657,6 +1657,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/python-pydot-regression-test.patch \
|
%D%/packages/patches/python-pydot-regression-test.patch \
|
||||||
%D%/packages/patches/python2-pygobject-2-deprecation.patch \
|
%D%/packages/patches/python2-pygobject-2-deprecation.patch \
|
||||||
%D%/packages/patches/python-pygpgme-fix-pinentry-tests.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-runpath.patch \
|
||||||
%D%/packages/patches/python-pytorch-system-libraries.patch \
|
%D%/packages/patches/python-pytorch-system-libraries.patch \
|
||||||
%D%/packages/patches/python-robotframework-source-date-epoch.patch \
|
%D%/packages/patches/python-robotframework-source-date-epoch.patch \
|
||||||
|
|
|
@ -1730,14 +1730,29 @@ (define-public python2-coverage
|
||||||
(define-public python-pytest-asyncio
|
(define-public python-pytest-asyncio
|
||||||
(package
|
(package
|
||||||
(name "python-pytest-asyncio")
|
(name "python-pytest-asyncio")
|
||||||
|
;; Version 0.10.0 is the last version which is compatible with Pytest <=
|
||||||
|
;; 5.4.0.
|
||||||
(version "0.10.0")
|
(version "0.10.0")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method git-fetch) ;for tests
|
||||||
(uri (pypi-uri "pytest-asyncio" version))
|
(uri (git-reference
|
||||||
|
(url "https://github.com/pytest-dev/pytest-asyncio")
|
||||||
|
(commit (string-append "v" version))))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32 "1bysy4nii13bm7h345wxf8fxcjhab7l374pqdv7vwv3izl053b4z"))))
|
(base32
|
||||||
|
"1m63b7nbph5z20mn8jgh6j9ac873i1k4in29x44vrkw3qwfwg13y"))
|
||||||
|
(patches (search-patches "python-pytest-asyncio-python-3.8.patch"))))
|
||||||
(build-system python-build-system)
|
(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
|
(native-inputs
|
||||||
`(("python-coverage" ,python-coverage)
|
`(("python-coverage" ,python-coverage)
|
||||||
("python-async-generator" ,python-async-generator)
|
("python-async-generator" ,python-async-generator)
|
||||||
|
|
238
gnu/packages/patches/python-pytest-asyncio-python-3.8.patch
Normal file
238
gnu/packages/patches/python-pytest-asyncio-python-3.8.patch
Normal 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
|
Loading…
Reference in a new issue