summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2024-01-28 03:29:33 +0100
committerMichał Górny <mgorny@gentoo.org>2024-01-28 03:29:33 +0100
commit448c5a045d47fe5cac56c30e4ff4bcab4d5627b7 (patch)
tree5ec59a7411f3ea6ae99ddaccfcc29f25c2632224 /dev-python/dnspython
parentsys-devel/gcc: add 13.2.1_p20240127 (diff)
downloadgentoo-448c5a045d47fe5cac56c30e4ff4bcab4d5627b7.tar.gz
gentoo-448c5a045d47fe5cac56c30e4ff4bcab4d5627b7.tar.bz2
gentoo-448c5a045d47fe5cac56c30e4ff4bcab4d5627b7.zip
dev-python/dnspython: Backport musl test fix
Closes: https://bugs.gentoo.org/923004 Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/dnspython')
-rw-r--r--dev-python/dnspython/dnspython-2.5.0.ebuild6
-rw-r--r--dev-python/dnspython/files/dnspython-2.5.0-musl-test.patch67
2 files changed, 73 insertions, 0 deletions
diff --git a/dev-python/dnspython/dnspython-2.5.0.ebuild b/dev-python/dnspython/dnspython-2.5.0.ebuild
index fa76df91c401..c942143466ba 100644
--- a/dev-python/dnspython/dnspython-2.5.0.ebuild
+++ b/dev-python/dnspython/dnspython-2.5.0.ebuild
@@ -38,6 +38,12 @@ BDEPEND="
distutils_enable_tests pytest
+PATCHES=(
+ # https://github.com/rthalley/dnspython/issues/1035
+ # https://github.com/rthalley/dnspython/commit/1b22985f2d67b6dd43259e3c6b853498f1cff712
+ "${FILESDIR}/${P}-musl-test.patch"
+)
+
python_install_all() {
distutils-r1_python_install_all
if use examples; then
diff --git a/dev-python/dnspython/files/dnspython-2.5.0-musl-test.patch b/dev-python/dnspython/files/dnspython-2.5.0-musl-test.patch
new file mode 100644
index 000000000000..a5aec3378fdd
--- /dev/null
+++ b/dev-python/dnspython/files/dnspython-2.5.0-musl-test.patch
@@ -0,0 +1,67 @@
+From 1b22985f2d67b6dd43259e3c6b853498f1cff712 Mon Sep 17 00:00:00 2001
+From: Bob Halley <halley@dnspython.org>
+Date: Sat, 27 Jan 2024 12:38:03 -0800
+Subject: [PATCH] In tests, work around musl libc and docker issues.
+
+Specifically: musl libc's getaddrinfo behavior always returns
+a canonical name.
+
+Docker's resolver proxy doesn't do dangling CNAMEs correctly
+and also answers NXDOMAIN in some cases where it should say
+no error, no data.
+---
+ tests/test_async.py | 14 +++++++++++---
+ tests/test_resolver.py | 21 +++++++++++++++------
+ tests/test_resolver_override.py | 19 ++++++++++++-------
+ tests/util.py | 10 +++++++++-
+ 4 files changed, 47 insertions(+), 17 deletions(-)
+
+diff --git a/tests/test_resolver_override.py b/tests/test_resolver_override.py
+index aed7a53d..be9e53f2 100644
+--- a/tests/test_resolver_override.py
++++ b/tests/test_resolver_override.py
+@@ -69,7 +69,7 @@ def test_override(self):
+ dns.resolver.restore_system_resolver()
+ self.assertTrue(socket.getaddrinfo is dns.resolver._original_getaddrinfo)
+
+- def equivalent_info(self, a, b):
++ def equivalent_info(self, a, b, q):
+ if len(a) != len(b):
+ return False
+ for x in a:
+@@ -78,16 +78,21 @@ def equivalent_info(self, a, b):
+ # looking for a zero protocol.
+ y = (x[0], x[1], 0, x[3], x[4])
+ if y not in b:
+- print("NOT EQUIVALENT")
+- print(a)
+- print(b)
+- return False
++ # musl libc insists on always providing a canonical name, so
++ # accept that too.
++ y = (x[0], x[1], x[2], q, x[4])
++ if y not in b:
++ print("NOT EQUIVALENT")
++ print(a)
++ print(b)
++ return False
+ return True
+
+ def equivalent(self, *args, **kwargs):
++ q = args[0]
+ a = socket.getaddrinfo(*args, **kwargs)
+ b = dns.resolver._original_getaddrinfo(*args, **kwargs)
+- return self.equivalent_info(a, b)
++ return self.equivalent_info(a, b, q)
+
+ @unittest.skipIf(
+ sys.platform == "win32", "avoid windows original getaddrinfo issues"
+@@ -139,7 +144,7 @@ def test_getaddrinfo_nxdomain(self):
+ def test_getaddrinfo_service(self):
+ a = socket.getaddrinfo("dns.google", "domain")
+ b = socket.getaddrinfo("dns.google", 53)
+- self.assertTrue(self.equivalent_info(a, b))
++ self.assertTrue(self.equivalent_info(a, b, "dns.google"))
+ try:
+ socket.getaddrinfo("dns.google", "domain", flags=socket.AI_NUMERICSERV)
+ self.assertTrue(False) # should not happen!