summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-08-26 09:50:14 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-08-29 01:05:28 -0400
commitb1ef8b410c334debee1e9ff577a69c6a21220100 (patch)
tree80a7b3758468824549057dc62270b81dda9dec40
parent0a2c8b10fc74606ec41c7b4d8d9b11bb91ba86ee (diff)
downloadguix-patches-b1ef8b410c334debee1e9ff577a69c6a21220100.tar
guix-patches-b1ef8b410c334debee1e9ff577a69c6a21220100.tar.gz
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.
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/check.scm21
-rw-r--r--gnu/packages/patches/python-pytest-asyncio-python-3.8.patch238
3 files changed, 257 insertions, 3 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index ebcb4c82f5..a0da1a96d8 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -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 \
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index b384b8297a..43689c3670 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -1730,14 +1730,29 @@ executed.")
(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)
diff --git a/gnu/packages/patches/python-pytest-asyncio-python-3.8.patch b/gnu/packages/patches/python-pytest-asyncio-python-3.8.patch
new file mode 100644
index 0000000000..519f92c047
--- /dev/null
+++ b/gnu/packages/patches/python-pytest-asyncio-python-3.8.patch
@@ -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