From 414b986450703840441d0828cf48495a67b00733 Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Thu, 20 Mar 2014 15:01:55 +0100 Subject: [PATCH] Use pytest-xprocess for process management --- .gitignore | 2 ++ install-deps.sh | 4 +++- requirements.txt | 1 + run-tests.sh | 14 +------------- tests/storage/dav/_owncloud.py | 2 +- tests/storage/dav/conftest.py | 22 ++++++++++++++++++++++ 6 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 tests/storage/dav/conftest.py diff --git a/.gitignore b/.gitignore index 7e0efb4..4398cdf 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ build env owncloud-testserver *.egg-info +.cache +.xprocess diff --git a/install-deps.sh b/install-deps.sh index 3c7c36e..7b47c22 100755 --- a/install-deps.sh +++ b/install-deps.sh @@ -26,7 +26,9 @@ radicale_deps() { } davserver_owncloud() { - git clone https://github.com/untitaker/owncloud-testserver.git + # Maybe tmpfs is mounted on /tmp/, can't harm anyway. + git clone --depth=1 https://github.com/untitaker/owncloud-testserver.git /tmp/owncloud-testserver + ln -s /tmp/owncloud-testserver . cd ./owncloud-testserver/ sh install.sh } diff --git a/requirements.txt b/requirements.txt index 1929a86..4395388 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ pytest +pytest-xprocess mock git+https://github.com/geier/leif diff --git a/run-tests.sh b/run-tests.sh index d47fe8b..1c82674 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -1,16 +1,4 @@ #!/bin/sh set -e [ -n "$DAV_SERVER" ] || DAV_SERVER=radicale_filesystem - -davserver_radicale_database() { true; } -davserver_radicale_filesystem() { true; } - -davserver_owncloud() { - sh ./owncloud-testserver/php.sh -} - - -# while it would be nice if the server was cleanly shut down, it's not really a -# problem either -davserver_$DAV_SERVER & -py.test $@ +exec py.test $@ diff --git a/tests/storage/dav/_owncloud.py b/tests/storage/dav/_owncloud.py index bb822e8..34f5e09 100644 --- a/tests/storage/dav/_owncloud.py +++ b/tests/storage/dav/_owncloud.py @@ -20,7 +20,7 @@ class ServerMixin(object): wsgi_teardown = None def setup_method(self, method): - subprocess.call([os.path.join(owncloud_repo, 'install.sh')]) + subprocess.check_call([os.path.join(owncloud_repo, 'install.sh')]) def get_storage_args(self, collection='test'): url = 'http://127.0.0.1:8080' diff --git a/tests/storage/dav/conftest.py b/tests/storage/dav/conftest.py new file mode 100644 index 0000000..3dead48 --- /dev/null +++ b/tests/storage/dav/conftest.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +''' + vdirsyncer.tests.storage.dav.conftest + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + :copyright: (c) 2014 Markus Unterwaditzer + :license: MIT, see LICENSE for more details. +''' + +import os +import pytest + +dav_server = os.environ.get('DAV_SERVER', '').strip() or 'radicale_filesystem' +php_sh = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../owncloud-testserver/php.sh')) + +if dav_server == 'owncloud': + @pytest.fixture(autouse=True) + def start_owncloud_server(xprocess): + def preparefunc(cwd): + return 'Listening on', ['sh', php_sh] + + xprocess.ensure('owncloud_server', preparefunc)