mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-13 00:30:07 +00:00
42f527c89d
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.
56 lines
1.7 KiB
C
56 lines
1.7 KiB
C
/* Test getaddrinfo and getnameinfo with AI_IDN, NI_IDN (Latin-1).
|
|
Copyright (C) 2018-2019 Free Software Foundation, Inc.
|
|
This file is part of the GNU C Library.
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with the GNU C Library; if not, see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
|
|
#define TEST_USE_UTF8 0
|
|
#include "tst-resolv-ai_idn-common.c"
|
|
|
|
#include <locale.h>
|
|
#include <support/xdlfcn.h>
|
|
|
|
static int
|
|
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");
|
|
|
|
struct resolv_test *aux = resolv_test_start
|
|
((struct resolv_redirect_config)
|
|
{
|
|
.response_callback = response,
|
|
});
|
|
|
|
gai_tests_with_libidn2 ();
|
|
gni_tests_with_libidn2 ();
|
|
|
|
resolv_test_end (aux);
|
|
xdlclose (handle);
|
|
return 0;
|
|
}
|
|
|
|
#include <support/test-driver.c>
|