From b2d3a7d96f7a93e18da46d1a6f0594969ece702c Mon Sep 17 00:00:00 2001 From: Galen Abell Date: Tue, 28 Feb 2023 17:22:44 +0100 Subject: [PATCH] testing/vdirsyncer: upgrade to 0.19.1 --- testing/vdirsyncer/01-fix-ssl-tests.patch | 113 ---------------------- testing/vdirsyncer/APKBUILD | 26 ++--- 2 files changed, 15 insertions(+), 124 deletions(-) delete mode 100644 testing/vdirsyncer/01-fix-ssl-tests.patch diff --git a/testing/vdirsyncer/01-fix-ssl-tests.patch b/testing/vdirsyncer/01-fix-ssl-tests.patch deleted file mode 100644 index 6dc4c401d25..00000000000 --- a/testing/vdirsyncer/01-fix-ssl-tests.patch +++ /dev/null @@ -1,113 +0,0 @@ -# From https://github.com/pimutils/vdirsyncer/pull/903 -diff --git a/tests/system/conftest.py b/tests/system/conftest.py -new file mode 100644 -index 00000000..59271e57 ---- /dev/null -+++ b/tests/system/conftest.py -@@ -0,0 +1,26 @@ -+import ssl -+ -+import pytest -+import trustme -+ -+ -+@pytest.fixture(scope="session") -+def ca(): -+ return trustme.CA() -+ -+ -+@pytest.fixture(scope="session") -+def localhost_cert(ca): -+ return ca.issue_cert("localhost") -+ -+ -+@pytest.fixture(scope="session") -+def httpserver_ssl_context(localhost_cert): -+ context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) -+ -+ crt = localhost_cert.cert_chain_pems[0] -+ key = localhost_cert.private_key_pem -+ with crt.tempfile() as crt_file, key.tempfile() as key_file: -+ context.load_cert_chain(crt_file, key_file) -+ -+ return context -diff --git a/tests/system/utils/test_main.py b/tests/system/utils/test_main.py -index 5a3942db..db3e70fd 100644 ---- a/tests/system/utils/test_main.py -+++ b/tests/system/utils/test_main.py -@@ -4,6 +4,8 @@ - import click_log - import pytest - import requests -+from cryptography import x509 -+from cryptography.hazmat.primitives import hashes - - from vdirsyncer import http - from vdirsyncer import utils -@@ -38,27 +40,55 @@ def _fingerprints_broken(): - return broken_urllib3 - - -+def fingerprint_of_cert(cert, hash=hashes.SHA256): -+ return x509.load_pem_x509_certificate(cert.bytes()).fingerprint(hash()).hex() -+ -+ - @pytest.mark.skipif( - _fingerprints_broken(), reason="https://github.com/shazow/urllib3/issues/529" - ) --@pytest.mark.parametrize( -- "fingerprint", -- [ -- "94:FD:7A:CB:50:75:A4:69:82:0A:F8:23:DF:07:FC:69:3E:CD:90:CA", -- "19:90:F7:23:94:F2:EF:AB:2B:64:2D:57:3D:25:95:2D", -- ], -+@pytest.mark.parametrize("hash_algorithm", [hashes.MD5, hashes.SHA256]) -+def test_request_ssl_leaf_fingerprint(httpserver, localhost_cert, hash_algorithm): -+ fingerprint = fingerprint_of_cert(localhost_cert.cert_chain_pems[0], hash_algorithm) -+ -+ # We have to serve something: -+ httpserver.expect_request("/").respond_with_data("OK") -+ url = f"https://{httpserver.host}:{httpserver.port}/" -+ -+ http.request("GET", url, verify=False, verify_fingerprint=fingerprint) -+ with pytest.raises(requests.exceptions.ConnectionError) as excinfo: -+ http.request("GET", url, verify_fingerprint=fingerprint) -+ -+ with pytest.raises(requests.exceptions.ConnectionError) as excinfo: -+ http.request( -+ "GET", -+ url, -+ verify=False, -+ verify_fingerprint="".join(reversed(fingerprint)), -+ ) -+ assert "Fingerprints did not match" in str(excinfo.value) -+ -+ -+@pytest.mark.skipif( -+ _fingerprints_broken(), reason="https://github.com/shazow/urllib3/issues/529" - ) --def test_request_ssl_fingerprints(httpsserver, fingerprint): -- httpsserver.serve_content("") # we need to serve something -+@pytest.mark.xfail(reason="Not implemented") -+@pytest.mark.parametrize("hash_algorithm", [hashes.MD5, hashes.SHA256]) -+def test_request_ssl_ca_fingerprint(httpserver, ca, hash_algorithm): -+ fingerprint = fingerprint_of_cert(ca.cert_pem) -+ -+ # We have to serve something: -+ httpserver.expect_request("/").respond_with_data("OK") -+ url = f"https://{httpserver.host}:{httpserver.port}/" - -- http.request("GET", httpsserver.url, verify=False, verify_fingerprint=fingerprint) -+ http.request("GET", url, verify=False, verify_fingerprint=fingerprint) - with pytest.raises(requests.exceptions.ConnectionError) as excinfo: -- http.request("GET", httpsserver.url, verify_fingerprint=fingerprint) -+ http.request("GET", url, verify_fingerprint=fingerprint) - - with pytest.raises(requests.exceptions.ConnectionError) as excinfo: - http.request( - "GET", -- httpsserver.url, -+ url, - verify=False, - verify_fingerprint="".join(reversed(fingerprint)), - ) diff --git a/testing/vdirsyncer/APKBUILD b/testing/vdirsyncer/APKBUILD index 6f1758de731..8976ec4dcc4 100644 --- a/testing/vdirsyncer/APKBUILD +++ b/testing/vdirsyncer/APKBUILD @@ -2,24 +2,27 @@ # Maintainer: Galen Abell pkgname=vdirsyncer _pyname=$pkgname -pkgver=0.18.0 -pkgrel=2 +pkgver=0.19.1 +pkgrel=0 pkgdesc="CLI Synchronization for CalDAV and CardDAV" url="http://vdirsyncer.pimutils.org" arch="noarch" license="BSD-3-Clause" depends=" python3 + py3-aiohttp + py3-aiostream py3-atomicwrites py3-click py3-click-log - py3-click-threading py3-requests py3-requests-toolbelt " -makedepends="py3-setuptools py3-setuptools_scm py3-sphinx" +makedepends="py3-build py3-installer py3-wheel py3-setuptools_scm py3-sphinx" checkdepends=" + py3-aioresponses py3-pytest + py3-pytest-asyncio py3-pytest-cov py3-pytest-httpserver py3-hypothesis @@ -28,25 +31,26 @@ checkdepends=" py3-werkzeug " subpackages="$pkgname-doc" -source="https://files.pythonhosted.org/packages/source/${_pyname%"${_pyname#?}"}/$_pyname/$_pyname-$pkgver.tar.gz - 01-fix-ssl-tests.patch" +source="https://files.pythonhosted.org/packages/source/v/$_pyname/$_pyname-$pkgver.tar.gz + " build() { - python3 setup.py build + python3 -m build --wheel --skip-dependency-check --no-isolation PYTHONPATH="build:$PYTHONPATH" sphinx-build -b man docs/ build/ } check() { # test_request_ssl requires network - make DETERMINISTIC_TESTS=true PYTEST_ADDOPTS="--deselect tests/system/utils/test_main.py::test_request_ssl" test + python3 -m venv --clear --without-pip --system-site-packages testenv + testenv/bin/python3 -m installer dist/*.whl + DETERMINISTIC_TESTS=true testenv/bin/python3 -m pytest --deselect tests/system/utils/test_main.py::test_request_ssl } package() { - python3 setup.py install --skip-build --root="$pkgdir" + python3 -m installer -d "$pkgdir" dist/*.whl install -Dm644 build/$pkgname.1 "$pkgdir"/usr/share/man/man1/$pkgname.1 } sha512sums=" -7fb3d0f7d982d8390d278de1a620231e6ead1ec64057c5dbac98dcff491fa3e6b9ed8ba953995458e393aab73b0b9ab8ba14010e06f90a04d8ee2c28c7c7fbfd vdirsyncer-0.18.0.tar.gz -09493b5298212fc724b3dfd2a5cffe89fae0857ee1e0a27eb272bf5960b03bac2c0cc8e18a2b9b58de13b8287c2377b1d2fb22b725f10fb243777faa9fd2d3b2 01-fix-ssl-tests.patch +2b0917bf69cfa298600b6b35b50db12ca57e1a963baf2ea9839a3c2f9f686f2f83f47c01e44ad2e12287ecfd470fe1a9ee4a756c0f8985236c2fe8d0454b6a15 vdirsyncer-0.19.1.tar.gz "