mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-03-31 09:55:55 +00:00
I don't want to ever have to sort imports again. It's a poor use of developer time. Automate this with a pre-commit hook, and check this on CI. Developers: I suggest you configure your editor to use `reorder_python_imports`. It uses the standard sorting, and detects first/third party libs well.
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
import pytest
|
|
|
|
from vdirsyncer.storage.dav import _BAD_XML_CHARS
|
|
from vdirsyncer.storage.dav import _merge_xml
|
|
from vdirsyncer.storage.dav import _parse_xml
|
|
|
|
|
|
def test_xml_utilities():
|
|
x = _parse_xml(b'''<?xml version="1.0" encoding="UTF-8" ?>
|
|
<D:multistatus xmlns:D="DAV:">
|
|
<D:response>
|
|
<D:propstat>
|
|
<D:status>HTTP/1.1 404 Not Found</D:status>
|
|
<D:prop>
|
|
<D:getcontenttype/>
|
|
</D:prop>
|
|
</D:propstat>
|
|
<D:propstat>
|
|
<D:prop>
|
|
<D:resourcetype>
|
|
<D:collection/>
|
|
</D:resourcetype>
|
|
</D:prop>
|
|
</D:propstat>
|
|
</D:response>
|
|
</D:multistatus>
|
|
''')
|
|
|
|
response = x.find('{DAV:}response')
|
|
props = _merge_xml(response.findall('{DAV:}propstat/{DAV:}prop'))
|
|
assert props.find('{DAV:}resourcetype/{DAV:}collection') is not None
|
|
assert props.find('{DAV:}getcontenttype') is not None
|
|
|
|
|
|
@pytest.mark.parametrize('char', range(32))
|
|
def test_xml_specialchars(char):
|
|
x = _parse_xml('<?xml version="1.0" encoding="UTF-8" ?>'
|
|
'<foo>ye{}s\r\n'
|
|
'hello</foo>'.format(chr(char)).encode('ascii'))
|
|
|
|
if char in _BAD_XML_CHARS:
|
|
assert x.text == 'yes\nhello'
|