public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc] Mark IDN tests unsupported with libidn2 before 2.0.5.
@ 2019-08-22 12:57 Joseph Myers
  0 siblings, 0 replies; only message in thread
From: Joseph Myers @ 2019-08-22 12:57 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=42f527c89dabfee80c674ffe6a498a665c6d8281

commit 42f527c89dabfee80c674ffe6a498a665c6d8281
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Aug 22 12:56:49 2019 +0000

    Mark IDN tests unsupported with libidn2 before 2.0.5.
    
    When using a system (e.g. Ubuntu 18.04) with libidn2 2.0.4 or earlier,
    test results include:
    
    FAIL: resolv/tst-resolv-ai_idn
    FAIL: resolv/tst-resolv-ai_idn-latin1
    
    It was previously stated
    <https://sourceware.org/ml/libc-alpha/2018-05/msg00771.html> that "It
    should fail to indicate you have bugs in your system libidn.".
    However, the glibc testsuite should be indicating whether there are
    bugs in glibc, not whether there are bugs in other system pieces - so
    unless you consider it a glibc bug that it fails to work around the
    libidn issues, these FAILs are not helpful.  And as a general
    principle, it's best for the expected glibc test results to be clean,
    with Bugzilla used to track known bugs in glibc itself, rather than
    people needing to know about the expected FAILs to tell if there are
    problems with their glibc build.  So, while there is an argument that
    install.texi (not just the old NEWS entries for 2.28) should explain
    the use of libidn2 and that 2.0.5 or later is recommended, test FAILs
    are not the right way to indicate the presence of an old libidn2
    version.
    
    This patch accordingly makes those tests return UNSUPPORTED for older
    libidn2 versions, just as they do when libidn2 isn't present at all.
    As implied by that past discussion, it's possible this could result in
    UNSUPPORTED for systems with older versions but whatever required
    fixes backported so the tests previously passed, if there are any such
    systems.
    
    Tested for x86_64 on Ubuntu 18.04, including verifying that putting an
    earlier version in place of 2.0.5 results in the tests FAILing whereas
    using 2.0.5 as in the patch results in UNSUPPORTED.  Florian reports
    that the tests still run on Fedora 30, with libidn 2.2.0.
    
    	* resolv/tst-resolv-ai_idn-latin1.c (do_test): Mark test
    	unsupported with libidn2 before 2.0.5.
    	* resolv/tst-resolv-ai_idn.c (do_test): Likewise.

Diff:
---
 ChangeLog                         | 4 ++++
 resolv/tst-resolv-ai_idn-latin1.c | 5 +++++
 resolv/tst-resolv-ai_idn.c        | 5 +++++
 3 files changed, 14 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 09c3d8f..c556c79 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2019-08-22  Joseph Myers  <joseph@codesourcery.com>
 
+	* resolv/tst-resolv-ai_idn-latin1.c (do_test): Mark test
+	unsupported with libidn2 before 2.0.5.
+	* resolv/tst-resolv-ai_idn.c (do_test): Likewise.
+
 	* manual/time.texi (strftime): Document %Ob and %OB as C2X
 	features.
 
diff --git a/resolv/tst-resolv-ai_idn-latin1.c b/resolv/tst-resolv-ai_idn-latin1.c
index 4a6bf56..5c51595 100644
--- a/resolv/tst-resolv-ai_idn-latin1.c
+++ b/resolv/tst-resolv-ai_idn-latin1.c
@@ -29,6 +29,11 @@ do_test (void)
   void *handle = dlopen (LIBIDN2_SONAME, RTLD_LAZY);
   if (handle == NULL)
     FAIL_UNSUPPORTED ("libidn2 not installed");
+  void *check_ver_sym = xdlsym (handle, "idn2_check_version");
+  const char *check_res
+    = ((const char *(*) (const char *)) check_ver_sym) ("2.0.5");
+  if (check_res == NULL)
+    FAIL_UNSUPPORTED ("libidn2 too old");
 
   if (setlocale (LC_CTYPE, "en_US.ISO-8859-1") == NULL)
     FAIL_EXIT1 ("setlocale: %m");
diff --git a/resolv/tst-resolv-ai_idn.c b/resolv/tst-resolv-ai_idn.c
index 493d1c7..0468427 100644
--- a/resolv/tst-resolv-ai_idn.c
+++ b/resolv/tst-resolv-ai_idn.c
@@ -28,6 +28,11 @@ do_test (void)
   void *handle = dlopen (LIBIDN2_SONAME, RTLD_LAZY);
   if (handle == NULL)
     FAIL_UNSUPPORTED ("libidn2 not installed");
+  void *check_ver_sym = xdlsym (handle, "idn2_check_version");
+  const char *check_res
+    = ((const char *(*) (const char *)) check_ver_sym) ("2.0.5");
+  if (check_res == NULL)
+    FAIL_UNSUPPORTED ("libidn2 too old");
 
   if (setlocale (LC_CTYPE, "en_US.UTF-8") == NULL)
     FAIL_EXIT1 ("setlocale: %m");


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2019-08-22 12:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-22 12:57 [glibc] Mark IDN tests unsupported with libidn2 before 2.0.5 Joseph Myers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).