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/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 \
 | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
							
								
								
									
										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