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 @@ executed.") | ||||||
| (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 | ||||||
		Reference in a new issue