libxml behavior changed with 2.14.0. This came up during Php 8.6 testing, and it was fixed by disabling the tests for 2.14.00 and up. As expected, it now affects earlier Php releases as well. Keeping the tests disabled would still work, but I have now identified some equivalent tests which will work both pre- and post- 2.14.0.
I am not able to reproduce the errors. I think these changes are right, but won't know for sure till Github CI runs.
CLDR changed decimal separator character for Italian Swiss from curly apostrophe to straight apostrophe. This affects a test in StringHelperLocale2Test.
libpng has added a warning "when a grayscale PNG file contains an embedded RGB color profile (iCCP chunk), which violates the official PNG specification". I have followed instructions to get rid of the offending chunk in blue_square.png.
Fix#5087. A secondary problem raised in that issue is a bit of an illusion. The problem there was that a sheet name ending with apostrophe is illegal; Worksheet `checkSheetTitle` is changed to enforce that restriction.
The default for if_not_found was the string '#N/A!', which is not one of
the error codes. ISNA() and ISERROR() returned FALSE for it and IFNA()
did not replace it. Default to the #N/A error code instead.
Since 5.0.0 writeLine() limits values to 15 significant digits, so that
Excel doesn't complain about precision when it opens the file. The check
was anchored only at the start of the value and ignored the cell's data
type, so a text cell was rewritten too and anything after the number was
lost: "3.14159265358979323 is pi" came out as "3.14159265358979".
Match the whole value, and leave string and inline string cells alone.
Numeric cells and formula results that are entirely a number are still
limited to 15 digits.
Fixes#5092
Per review: the tests changed here that already had expectExceptionMessage
keep it, and these five did not. Each now pins the message so the test
confirms the exception is raised for the right reason.
The messages were read off the real exceptions rather than from the throw
sites, and each is a stable substring in the style the suite already uses,
so a path or an argument value cannot break it. Mutating all seven messages
in these four files to a sentinel fails exactly seven tests, which is the
two that were already there plus these five.
The same shape as the Reader/Xml ones, in the rest of the suite. Each
sits after the call that raises the expected exception, so it is
unreachable, and the scanner now reports none left in tests/.
Two are unwrapped rather than deleted, because the throwing call was
the assertion's own argument: ModeTest's getCalculatedValue() and
OdsInfoTest's listWorksheetNames().
testLoadCorruptFile had four dead statements, not one. Everything after
$reader->load() is unreachable, so the whole tail goes and the test
ends at the load, matching testLoadInvalidFile above it.
The nine files report 71 tests and 196 assertions before and after.
Eight tests in Reader/Xml assert on a value assigned by the call that
throws the expected exception. The call raises, so the variable is never
assigned and the assertion never runs.
Six of them are self-comparisons, assertNotEquals($x, $x). Those could
not pass even if they were reached, so they only served to make the test
look like it asserted something. Dropping them changes no coverage:
XmlInfoTest stays at 16 assertions and XmlTest at 19.