include/test/unoapi_test.hxx | 2 +- sw/qa/extras/globalfilter/globalfilter.cxx | 3 +++ sw/qa/extras/uiwriter/uiwriter9.cxx | 1 + test/source/unoapi_test.cxx | 18 ++++++++++++++++-- vcl/qa/cppunit/pdfexport/pdfexport.cxx | 6 +++--- vcl/qa/cppunit/pdfexport/pdfexport2.cxx | 28 +++++++++++++--------------- 6 files changed, 37 insertions(+), 21 deletions(-)
New commits: commit d9035e3cbd3d17b9d5ea06088df23e5969a2cc37 Author: Xisco Fauli <[email protected]> AuthorDate: Mon Feb 23 13:47:44 2026 +0100 Commit: Xisco Fauli <[email protected]> CommitDate: Mon Feb 23 18:29:05 2026 +0100 UnoApiTest: validate PDF/UA, PDF/A-1b, PDF/A-2b or PDF/A-3b by default Change-Id: I984b5fb16bf36beb9468940a7d34248b17eaa3f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200051 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> diff --git a/include/test/unoapi_test.hxx b/include/test/unoapi_test.hxx index 664d12994a71..301e691509b5 100644 --- a/include/test/unoapi_test.hxx +++ b/include/test/unoapi_test.hxx @@ -189,9 +189,9 @@ protected: rtl::Reference<TestInteractionHandler> xInteractionHandler; +private: void validate(TestFilter eFilter); -private: bool mbSkipValidation; OUString m_aBaseString; diff --git a/sw/qa/extras/globalfilter/globalfilter.cxx b/sw/qa/extras/globalfilter/globalfilter.cxx index 03f52cd58d61..580d07f221bb 100644 --- a/sw/qa/extras/globalfilter/globalfilter.cxx +++ b/sw/qa/extras/globalfilter/globalfilter.cxx @@ -1392,6 +1392,7 @@ CPPUNIT_TEST_FIXTURE(Test, testListLabelPDFExport) uno::Sequence<beans::PropertyValue> aFilterData( comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) } })); aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData; + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result with pdfium. @@ -1797,6 +1798,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTableOfContentLinksHaveContentSet) uno::Sequence<beans::PropertyValue> aFilterData( comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) } })); aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData; + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result with pdfium. @@ -1859,6 +1861,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf143311) uno::Sequence<beans::PropertyValue> aFilterData( comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) } })); aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData; + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); vcl::filter::PDFDocument aDocument; diff --git a/sw/qa/extras/uiwriter/uiwriter9.cxx b/sw/qa/extras/uiwriter/uiwriter9.cxx index b749a795ef2f..281fd974e61f 100644 --- a/sw/qa/extras/uiwriter/uiwriter9.cxx +++ b/sw/qa/extras/uiwriter/uiwriter9.cxx @@ -764,6 +764,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testPDFExportCrash) uno::Sequence<beans::PropertyValue> aFilterData( comphelper::InitPropertySequence({ { "PDFUACompliance", uno::Any(true) } })); + skipValidation(); // Without the fix in place, this test would have crashed here save(TestFilter::PDF_WRITER, { diff --git a/test/source/unoapi_test.cxx b/test/source/unoapi_test.cxx index 8ae3b29f8073..1717b93cdf2e 100644 --- a/test/source/unoapi_test.cxx +++ b/test/source/unoapi_test.cxx @@ -371,8 +371,22 @@ void UnoApiTest::save(TestFilter eFilter, const uno::Sequence<beans::PropertyVal css::uno::Reference<frame::XStorable> xStorable(mxComponent, css::uno::UNO_QUERY_THROW); xStorable->storeToURL(maTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList()); - // FIXME: Don't validate pdf files by default for now - if (!mbSkipValidation && eFilter != TestFilter::PDF_WRITER) + if (eFilter == TestFilter::PDF_WRITER) + { + comphelper::SequenceAsHashMap aFilterData; + if (aMediaDescriptor.contains(u"FilterData"_ustr)) + aFilterData = aMediaDescriptor[u"FilterData"_ustr]; + bool bPDFUACompliance( + aFilterData.getUnpackedValueOrDefault(u"PDFUACompliance"_ustr, false)); + sal_Int32 nSelectPdfVersion( + aFilterData.getUnpackedValueOrDefault(u"SelectPdfVersion"_ustr, sal_Int32(0))); + // Only validate PDF/UA, PDF/A-1b, PDF/A-2b or PDF/A-3b + if (!bPDFUACompliance && nSelectPdfVersion != 1 && nSelectPdfVersion != 2 + && nSelectPdfVersion != 3) + skipValidation(); + } + + if (!mbSkipValidation) validate(eFilter); } diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx index ad1e4fc7949c..614952087a2f 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx @@ -122,6 +122,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf160051) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf160051.odt"); + + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -168,6 +170,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testCommentAnnotation) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf162359.odt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -2481,7 +2484,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf157816.fodt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -2884,7 +2886,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816Link) vcl::filter::PDFDocument aDocument; loadFromFile(u"LinkWithFly.fodt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -3276,7 +3277,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf142806) vcl::filter::PDFDocument aDocument; loadFromFile(u"LinkPages.fodt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx index b83cd1412a4c..c3277eda75d7 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx @@ -76,6 +76,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf160705) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf160705.odt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -145,6 +146,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf159895) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf159895.odt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -1392,6 +1394,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testPdfUaMetadata) vcl::filter::PDFDocument aDocument; loadFromFile(u"BrownFoxLazyDog.odt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -1473,7 +1476,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf139736) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf139736-1.odt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -1581,6 +1583,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152231) aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData; vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf152231.fodt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -1690,9 +1693,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf136805) aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData; vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf136805.pdf"); - save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Without the fix in place, the validation would have failed - validate(TestFilter::PDF_WRITER); + save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); } CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157517) @@ -1706,9 +1708,8 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157517) aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData; vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf157517.odt"); - save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Without the fix in place, the validation would have failed - validate(TestFilter::PDF_WRITER); + save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); } CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152235) @@ -1723,6 +1724,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152235) comphelper::SequenceAsHashMap aMediaDescriptor; aMediaDescriptor[u"FilterData"_ustr] <<= aFilterData; loadFromURL(u"private:factory/swriter"_ustr); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); vcl::filter::PDFDocument aDocument; @@ -1810,7 +1812,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf167290) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf167290.odt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); } CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf149140) @@ -1823,7 +1824,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf149140) vcl::filter::PDFDocument aDocument; loadFromFile(u"TableTH_test_LibreOfficeWriter7.3.3_HeaderRow-HeadersInTopRow.fodt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -1884,7 +1884,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testNestedSection) vcl::filter::PDFDocument aDocument; loadFromFile(u"nestedsection.fodt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -2031,6 +2030,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157817) vcl::filter::PDFDocument aDocument; loadFromFile(u"SimpleTOC.fodt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -2206,6 +2206,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf135638) vcl::filter::PDFDocument aDocument; loadFromFile(u"image-shape.fodt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -2302,6 +2303,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157703) vcl::filter::PDFDocument aDocument; loadFromFile(u"LO_Lbl_Lbody_bug_report.fodt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -2382,6 +2384,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testSpans) vcl::filter::PDFDocument aDocument; loadFromFile(u"spanlist.fodt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -2916,6 +2919,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf57423) vcl::filter::PDFDocument aDocument; loadFromFile(u"Description PDF Export test .odt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -3022,7 +3026,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf154982) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf154982.odt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -3104,6 +3107,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf157397) vcl::filter::PDFDocument aDocument; loadFromFile(u"PDF_export_with_formcontrol.fodt"); + skipValidation(); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); // Parse the export result. @@ -3433,7 +3437,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf135192) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf135192-1.fodp"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -3566,7 +3569,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf154955) vcl::filter::PDFDocument aDocument; loadFromFile(u"grouped-shape.fodt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -3702,7 +3704,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf155190) vcl::filter::PDFDocument aDocument; loadFromFile(u"tdf155190.odt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -3793,7 +3794,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testMediaShapeAnnot) vcl::filter::PDFDocument aDocument; loadFromFile(u"vid.odt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -3934,7 +3934,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testFlyFrameHyperlinkAnnot) vcl::filter::PDFDocument aDocument; loadFromFile(u"image-hyperlink-alttext.fodt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ); @@ -4071,7 +4070,6 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testFormControlAnnot) vcl::filter::PDFDocument aDocument; loadFromFile(u"formcontrol.fodt"); save(TestFilter::PDF_WRITER, aMediaDescriptor.getAsConstPropertyValueList()); - validate(TestFilter::PDF_WRITER); // Parse the export result. SvFileStream aStream(maTempFile.GetURL(), StreamMode::READ);
