134 lines
4.8 KiB
Diff
134 lines
4.8 KiB
Diff
From 7a4e8b834ee81aeeaa5dd0458b3986d33bb69de8 Mon Sep 17 00:00:00 2001
|
|
From: Adam Williamson <awilliam@redhat.com>
|
|
Date: Wed, 9 May 2018 15:50:50 -0700
|
|
Subject: [PATCH] Skip tests that use 'xprocess' fixture when not installed
|
|
|
|
There's a trick in conftest.py intended to allow tests to use
|
|
a fixture named 'subprocess', which will be the 'xprocess'
|
|
fixture if that's available, or will cause the test to be
|
|
skipped it it's not available. Some tests, however, just use
|
|
the 'xprocess' fixture directly, so all those tests fail if
|
|
it is not available.
|
|
|
|
We don't really need this 'subprocess' fixture at all, it
|
|
turns out - we can just do the same trick directly on the
|
|
'xprocess' fixture, so all tests can use that directly (and
|
|
also there's no confusion between this wrapper fixture and the
|
|
commonly-used Python module called...subprocess). This
|
|
simplifies things and makes the whole test suite run OK when
|
|
xprocess isn't available.
|
|
|
|
I noticed this when trying to run the test suite during build
|
|
of the Fedora package - xprocess isn't packaged for Fedora yet,
|
|
so there's no way to run the tests that use it unfortunately.
|
|
|
|
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
|
---
|
|
tests/conftest.py | 12 ++++--------
|
|
tests/contrib/cache/test_cache.py | 12 ++++++------
|
|
2 files changed, 10 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/tests/conftest.py b/tests/conftest.py
|
|
index ce885777a..cd78d8ceb 100644
|
|
--- a/tests/conftest.py
|
|
+++ b/tests/conftest.py
|
|
@@ -27,12 +27,8 @@
|
|
__import__('pytest_xprocess')
|
|
except ImportError:
|
|
@pytest.fixture(scope='session')
|
|
- def subprocess():
|
|
+ def xprocess():
|
|
pytest.skip('pytest-xprocess not installed.')
|
|
-else:
|
|
- @pytest.fixture(scope='session')
|
|
- def subprocess(xprocess):
|
|
- return xprocess
|
|
|
|
|
|
port_generator = count(13220)
|
|
@@ -117,7 +113,7 @@ def wait_for_reloader_loop(self):
|
|
|
|
|
|
@pytest.fixture
|
|
-def dev_server(tmpdir, subprocess, request, monkeypatch):
|
|
+def dev_server(tmpdir, xprocess, request, monkeypatch):
|
|
'''Run werkzeug.serving.run_simple in its own process.
|
|
|
|
:param application: String for the module that will be created. The module
|
|
@@ -144,7 +140,7 @@ def run_dev_server(application):
|
|
url_base = 'http://localhost:{0}'.format(port)
|
|
|
|
info = _ServerInfo(
|
|
- subprocess,
|
|
+ xprocess,
|
|
'localhost:{0}'.format(port),
|
|
url_base,
|
|
port
|
|
@@ -154,7 +150,7 @@ def preparefunc(cwd):
|
|
args = [sys.executable, __file__, str(tmpdir)]
|
|
return lambda: 'pid=%s' % info.request_pid(), args
|
|
|
|
- subprocess.ensure('dev_server', preparefunc, restart=True)
|
|
+ xprocess.ensure('dev_server', preparefunc, restart=True)
|
|
|
|
def teardown():
|
|
# Killing the process group that runs the server, not just the
|
|
diff --git a/tests/contrib/cache/test_cache.py b/tests/contrib/cache/test_cache.py
|
|
index 3e6ee7f36..0a2dac14a 100644
|
|
--- a/tests/contrib/cache/test_cache.py
|
|
+++ b/tests/contrib/cache/test_cache.py
|
|
@@ -221,7 +221,7 @@ class TestRedisCache(GenericCacheTests):
|
|
_guaranteed_deletes = True
|
|
|
|
@pytest.fixture(scope='class', autouse=True)
|
|
- def requirements(self, subprocess):
|
|
+ def requirements(self, xprocess):
|
|
if redis is None:
|
|
pytest.skip('Python package "redis" is not installed.')
|
|
|
|
@@ -229,7 +229,7 @@ def prepare(cwd):
|
|
return '[Rr]eady to accept connections', ['redis-server']
|
|
|
|
try:
|
|
- subprocess.ensure('redis_server', prepare)
|
|
+ xprocess.ensure('redis_server', prepare)
|
|
except IOError as e:
|
|
# xprocess raises FileNotFoundError
|
|
if e.errno == errno.ENOENT:
|
|
@@ -238,7 +238,7 @@ def prepare(cwd):
|
|
raise
|
|
|
|
yield
|
|
- subprocess.getinfo('redis_server').terminate()
|
|
+ xprocess.getinfo('redis_server').terminate()
|
|
|
|
@pytest.fixture(params=(None, False, True))
|
|
def make_cache(self, request):
|
|
@@ -272,7 +272,7 @@ class TestMemcachedCache(GenericCacheTests):
|
|
_can_use_fast_sleep = False
|
|
|
|
@pytest.fixture(scope='class', autouse=True)
|
|
- def requirements(self, subprocess):
|
|
+ def requirements(self, xprocess):
|
|
if memcache is None:
|
|
pytest.skip(
|
|
'Python package for memcache is not installed. Need one of '
|
|
@@ -283,7 +283,7 @@ def prepare(cwd):
|
|
return '', ['memcached']
|
|
|
|
try:
|
|
- subprocess.ensure('memcached', prepare)
|
|
+ xprocess.ensure('memcached', prepare)
|
|
except IOError as e:
|
|
# xprocess raises FileNotFoundError
|
|
if e.errno == errno.ENOENT:
|
|
@@ -292,7 +292,7 @@ def prepare(cwd):
|
|
raise
|
|
|
|
yield
|
|
- subprocess.getinfo('memcached').terminate()
|
|
+ xprocess.getinfo('memcached').terminate()
|
|
|
|
@pytest.fixture
|
|
def make_cache(self):
|