mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-04-27 14:57:41 +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 ",
|
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
||||||
"python": "3.3"
|
"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 ",
|
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=release BUILD_PRS=true ",
|
||||||
"python": "3.3"
|
"python": "3.3"
|
||||||
|
|
@ -37,6 +41,10 @@
|
||||||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
||||||
"python": "3.4"
|
"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 ",
|
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=release BUILD_PRS=true ",
|
||||||
"python": "3.4"
|
"python": "3.4"
|
||||||
|
|
@ -49,6 +57,10 @@
|
||||||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
||||||
"python": "3.5"
|
"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 ",
|
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=release BUILD_PRS=true ",
|
||||||
"python": "3.5"
|
"python": "3.5"
|
||||||
|
|
@ -62,7 +74,7 @@
|
||||||
"python": "3.6"
|
"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"
|
"python": "3.6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -101,6 +113,10 @@
|
||||||
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=devel BUILD_PRS=true ",
|
||||||
"python": "pypy3"
|
"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 ",
|
"env": "BUILD=test DAV_SERVER=radicale REQUIREMENTS=release BUILD_PRS=true ",
|
||||||
"python": "pypy3"
|
"python": "pypy3"
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ Version 0.16.0
|
||||||
- Strip ``METHOD:PUBLISH`` added by some calendar providers.
|
- Strip ``METHOD:PUBLISH`` added by some calendar providers.
|
||||||
- Fix crash of Google storages when saving token file.
|
- Fix crash of Google storages when saving token file.
|
||||||
- Make DAV discovery more RFC-conformant, see :ghpr:`585`.
|
- Make DAV discovery more RFC-conformant, see :ghpr:`585`.
|
||||||
|
- Vdirsyncer is now tested against Xandikos, see :ghpr:`601`.
|
||||||
|
|
||||||
Version 0.15.0
|
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
|
implement the CalDAV and CardDAV standards completely, which might lead to
|
||||||
issues even with very well-written clients. Apart from its non-conformity with
|
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
|
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
|
That said, vdirsyncer is continuously tested against the git version and the
|
||||||
latest PyPI release of Radicale.
|
latest PyPI release of Radicale.
|
||||||
|
|
@ -252,3 +252,26 @@ tested frequently. You can use :storage:`google_contacts` and
|
||||||
:storage:`google_calendar`.
|
:storage:`google_calendar`.
|
||||||
|
|
||||||
For more information see :gh:`202` and :gh:`8`.
|
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,
|
for python, requirements in itertools.product(python_versions,
|
||||||
("devel", "release", "minimal")):
|
("devel", "release", "minimal")):
|
||||||
|
dav_servers = ("radicale",)
|
||||||
|
rs_servers = ()
|
||||||
if python == latest_python and requirements == "release":
|
if python == latest_python and requirements == "release":
|
||||||
dav_servers = ("skip", "radicale", "owncloud", "nextcloud", "baikal",
|
dav_servers += ("owncloud", "nextcloud", "baikal", "davical", "icloud",
|
||||||
"davical", "icloud", "fastmail")
|
"fastmail")
|
||||||
rs_servers = ()
|
elif requirements == "devel":
|
||||||
else:
|
dav_servers += ("xandikos",)
|
||||||
dav_servers = ("radicale",)
|
|
||||||
rs_servers = ()
|
|
||||||
|
|
||||||
for server_type, server in itertools.chain(
|
for server_type, server in itertools.chain(
|
||||||
(("REMOTESTORAGE", x) for x in rs_servers),
|
(("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