> + for (size = 0; size <= 8; size++) > + { > + size_t length; > + char *result; > + > + memcpy (buf, "DEADBEEF", 8); > + length = size; > + result = my_asnprintf (buf, &length, "%2.0f", 1.6314159265358979e+125); > + ASSERT (result != NULL); > + ASSERT (strcmp (result, > "163141592653589790215729350939528493057529598899734151772468186268423257777068536614838678161083520756952076273094236944990208") > == 0);
This new test case is a little bit too strict: it fails on Cygwin. This patch fixes it. 2018-10-02 Bruno Haible <br...@clisp.org> vasnprintf tests: Avoid test failure on Cygwin. * tests/test-vasnprintf.c (test_function): Change the test added on 2018-09-23 to check only the 42 most significant digits. diff --git a/tests/test-vasnprintf.c b/tests/test-vasnprintf.c index 93d81d7..0cd17f9 100644 --- a/tests/test-vasnprintf.c +++ b/tests/test-vasnprintf.c @@ -70,7 +70,13 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) length = size; result = my_asnprintf (buf, &length, "%2.0f", 1.6314159265358979e+125); ASSERT (result != NULL); - ASSERT (strcmp (result, "163141592653589790215729350939528493057529598899734151772468186268423257777068536614838678161083520756952076273094236944990208") == 0); + /* The exact result and the result on glibc systems is + 163141592653589790215729350939528493057529598899734151772468186268423257777068536614838678161083520756952076273094236944990208 + On Cygwin, the result is + 163141592653589790215729350939528493057529600000000000000000000000000000000000000000000000000000000000000000000000000000000000 + */ + ASSERT (strlen (result) == 126); + ASSERT (memcmp (result, "163141592653589790215729350939528493057529", 42) == 0); ASSERT (length == 126); if (size < 126 + 1) ASSERT (result != buf);