mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-03-25 08:55:50 +00:00
Add xandikos to CI (#601)
* Add xandikos to CI * wip * Work around missing dependency spec * Add xandikos to travis * Remove auth * Test release and devel * Refactor xandikos setup * Fix syntax error * Only test xandikos-git * Add section to supported.rst * changelog
This commit is contained in:
parent
bb4a9a1e6c
commit
28f204162b
6 changed files with 96 additions and 8 deletions
18
.travis.yml
18
.travis.yml
|
|
@ -25,6 +25,10 @@
|
|||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
||||
"python": "3.3"
|
||||
},
|
||||
{
|
||||
"env": "BUILD=test DAV_SERVER=xandikos REQUIREMENTS=devel BUILD_PRS=true ",
|
||||
"python": "3.3"
|
||||
},
|
||||
{
|
||||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=release BUILD_PRS=true ",
|
||||
"python": "3.3"
|
||||
|
|
@ -37,6 +41,10 @@
|
|||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
||||
"python": "3.4"
|
||||
},
|
||||
{
|
||||
"env": "BUILD=test DAV_SERVER=xandikos REQUIREMENTS=devel BUILD_PRS=true ",
|
||||
"python": "3.4"
|
||||
},
|
||||
{
|
||||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=release BUILD_PRS=true ",
|
||||
"python": "3.4"
|
||||
|
|
@ -49,6 +57,10 @@
|
|||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
||||
"python": "3.5"
|
||||
},
|
||||
{
|
||||
"env": "BUILD=test DAV_SERVER=xandikos REQUIREMENTS=devel BUILD_PRS=true ",
|
||||
"python": "3.5"
|
||||
},
|
||||
{
|
||||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=release BUILD_PRS=true ",
|
||||
"python": "3.5"
|
||||
|
|
@ -62,7 +74,7 @@
|
|||
"python": "3.6"
|
||||
},
|
||||
{
|
||||
"env": "BUILD=test DAV_SERVER=skip REQUIREMENTS=release BUILD_PRS=true ",
|
||||
"env": "BUILD=test DAV_SERVER=xandikos REQUIREMENTS=devel BUILD_PRS=true ",
|
||||
"python": "3.6"
|
||||
},
|
||||
{
|
||||
|
|
@ -101,6 +113,10 @@
|
|||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
||||
"python": "pypy3"
|
||||
},
|
||||
{
|
||||
"env": "BUILD=test DAV_SERVER=xandikos REQUIREMENTS=devel BUILD_PRS=true ",
|
||||
"python": "pypy3"
|
||||
},
|
||||
{
|
||||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=release BUILD_PRS=true ",
|
||||
"python": "pypy3"
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ Version 0.16.0
|
|||
- Strip ``METHOD:PUBLISH`` added by some calendar providers.
|
||||
- Fix crash of Google storages when saving token file.
|
||||
- Make DAV discovery more RFC-conformant, see :ghpr:`585`.
|
||||
- Vdirsyncer is now tested against Xandikos, see :ghpr:`601`.
|
||||
|
||||
Version 0.15.0
|
||||
==============
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ Radicale_ is a very lightweight server, however, it intentionally doesn't
|
|||
implement the CalDAV and CardDAV standards completely, which might lead to
|
||||
issues even with very well-written clients. Apart from its non-conformity with
|
||||
standards, there are multiple other problems with its code quality and the way
|
||||
it is maintained.
|
||||
it is maintained. Consider using e.g. Xandikos_ instead.
|
||||
|
||||
That said, vdirsyncer is continuously tested against the git version and the
|
||||
latest PyPI release of Radicale.
|
||||
|
|
@ -252,3 +252,26 @@ tested frequently. You can use :storage:`google_contacts` and
|
|||
:storage:`google_calendar`.
|
||||
|
||||
For more information see :gh:`202` and :gh:`8`.
|
||||
|
||||
Xandikos
|
||||
--------
|
||||
|
||||
Xandikos_ is a lightweight, yet complete CalDAV and CardDAV server, backed by
|
||||
git. Vdirsyncer is continuously tested against its latest version.
|
||||
|
||||
After running ``./bin/xandikos --defaults -d $HOME/dav``, you should be able to
|
||||
point vdirsyncer against the root of Xandikos like this::
|
||||
|
||||
[storage cal]
|
||||
type = "caldav"
|
||||
url = "https://xandikos.example.com/"
|
||||
username = ...
|
||||
password = ...
|
||||
|
||||
[storage card]
|
||||
type = "carddav"
|
||||
url = "https://xandikos.example.com/"
|
||||
username = ...
|
||||
password = ...
|
||||
|
||||
.. _Xandikos: https://github.com/jelmer/xandikos
|
||||
|
|
|
|||
|
|
@ -45,13 +45,13 @@ matrix.append({
|
|||
|
||||
for python, requirements in itertools.product(python_versions,
|
||||
("devel", "release", "minimal")):
|
||||
dav_servers = ("radicale",)
|
||||
rs_servers = ()
|
||||
if python == latest_python and requirements == "release":
|
||||
dav_servers = ("skip", "radicale", "owncloud", "nextcloud", "baikal",
|
||||
"davical", "icloud", "fastmail")
|
||||
rs_servers = ()
|
||||
else:
|
||||
dav_servers = ("radicale",)
|
||||
rs_servers = ()
|
||||
dav_servers += ("owncloud", "nextcloud", "baikal", "davical", "icloud",
|
||||
"fastmail")
|
||||
elif requirements == "devel":
|
||||
dav_servers += ("xandikos",)
|
||||
|
||||
for server_type, server in itertools.chain(
|
||||
(("REMOTESTORAGE", x) for x in rs_servers),
|
||||
|
|
|
|||
35
tests/storage/servers/xandikos/__init__.py
Normal file
35
tests/storage/servers/xandikos/__init__.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import pytest
|
||||
|
||||
from xandikos.web import XandikosApp, XandikosBackend, WellknownRedirector
|
||||
|
||||
import wsgi_intercept
|
||||
import wsgi_intercept.requests_intercept
|
||||
|
||||
|
||||
class ServerMixin(object):
|
||||
@pytest.fixture
|
||||
def get_storage_args(self, request, tmpdir, slow_create_collection):
|
||||
tmpdir.mkdir('xandikos')
|
||||
backend = XandikosBackend(path=str(tmpdir))
|
||||
cup = '/user/'
|
||||
backend.create_principal(cup, create_defaults=True)
|
||||
app = XandikosApp(backend, cup)
|
||||
|
||||
app = WellknownRedirector(app, '/')
|
||||
|
||||
wsgi_intercept.requests_intercept.install()
|
||||
wsgi_intercept.add_wsgi_intercept('127.0.0.1', 8080, lambda: app)
|
||||
|
||||
def teardown():
|
||||
wsgi_intercept.remove_wsgi_intercept('127.0.0.1', 8080)
|
||||
wsgi_intercept.requests_intercept.uninstall()
|
||||
request.addfinalizer(teardown)
|
||||
|
||||
def inner(collection='test'):
|
||||
url = 'http://127.0.0.1:8080/'
|
||||
args = {'url': url, 'collection': collection}
|
||||
|
||||
if collection is not None:
|
||||
args = self.storage_class.create_collection(**args)
|
||||
return args
|
||||
return inner
|
||||
13
tests/storage/servers/xandikos/install.sh
Normal file
13
tests/storage/servers/xandikos/install.sh
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
pip install wsgi_intercept
|
||||
|
||||
if [ "$REQUIREMENTS" = "release" ] || [ "$REQUIREMENTS" = "minimal" ]; then
|
||||
pip install -U xandikos
|
||||
elif [ "$REQUIREMENTS" = "devel" ]; then
|
||||
pip install -U git+https://jelmer.uk/code/xandikos/
|
||||
else
|
||||
echo "Invalid REQUIREMENTS value"
|
||||
false
|
||||
fi
|
||||
Loading…
Reference in a new issue