On 9/1/23 10:37, Dan Horák wrote:
The "dubious array" tests are already being skipped for aarch64 due known issue [1], shouldn't we just skip them for ppc64le and s390x as well? Or should it be enabled only for "good" platforms, eg. x86_64?
I think either approach should be OK, whatever you find more convenient. One minor downside when adding additional conditionals to skip on ppc64le and s390x to
void ArrayFunctionsTest::testDubiousArrayFormulasFODS() { //TODO: sc/qa/unit/data/functions/array/dubious/fods/linest.fods produces widely different // values when built with -ffp-contract enabled (-ffp-contract=on default on Clang 14, // -ffp-contract=fast default when building with optimizations on GCC) on at least aarch64: #if !((defined __clang__ || defined __GNUC__) && defined __aarch64__) OUString aDirectoryURL = m_directories.getURLFromSrc(u"/sc/qa/unit/data/functions/array/dubious/fods/"); recursiveScan(test::pass, "OpenDocument Spreadsheet Flat XML", aDirectoryURL, "com.sun.star.comp.filter.OdfFlatXml,,com.sun.star.comp.Calc.XMLOasisImporter,com.sun.star.comp.Calc.XMLOasisExporter,,,true", FODS_FORMAT_TYPE, SotClipboardFormatId::NONE, 0, false); #endif }
would be that the TODO comment makes it then sound like the issues on ppc64le and s390x are also known to be due to -ffp-contract settings, even if you would not verify that.
So maybe the best thing is to turn this into a x86_64 only conditional, and extend the TODO comment with something like "...on at least aarch64, so lets only execute this on x86-64, where it appears to always work well:"
(The underlying issue is that tests like this are, excuse my wording, utter crap. Instead of checking for exact values, they should of course check that results are in whatever acceptable range according to a spec. But Calc doesn't even come with such a spec in the first place...)