include/test/unoapi_test.hxx            |    3 +--
 test/source/unoapi_test.cxx             |   20 +++++++++++++++++---
 vcl/qa/cppunit/pdfexport/pdfexport.cxx  |    5 ++---
 vcl/qa/cppunit/pdfexport/pdfexport2.cxx |   21 +++++++++++----------
 4 files changed, 31 insertions(+), 18 deletions(-)

New commits:
commit 159f25e8e5994bb940ff254ac3f1c55e76cd48f4
Author:     Xisco Fauli <[email protected]>
AuthorDate: Fri Mar 6 16:21:10 2026 +0000
Commit:     Tomaž Vajngerl <[email protected]>
CommitDate: Tue Mar 10 14:19:23 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]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201186
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Tomaž Vajngerl <[email protected]>

diff --git a/include/test/unoapi_test.hxx b/include/test/unoapi_test.hxx
index 33d6fa005fb4..3bfeac27c889 100644
--- a/include/test/unoapi_test.hxx
+++ b/include/test/unoapi_test.hxx
@@ -177,9 +177,8 @@ protected:
 
     rtl::Reference<TestInteractionHandler> xInteractionHandler;
 
-    void validate(TestFilter eFilter);
-
 private:
+    void validate(TestFilter eFilter);
     void setTestInteractionHandler(const char* pPassword,
                                    std::vector<css::beans::PropertyValue>& 
rFilterOptions);
 
diff --git a/test/source/unoapi_test.cxx b/test/source/unoapi_test.cxx
index 2b30d3c40ad8..4f2713e4c80c 100644
--- a/test/source/unoapi_test.cxx
+++ b/test/source/unoapi_test.cxx
@@ -220,7 +220,7 @@ void UnoApiTest::validate(TestFilter eFilter)
 
     if (eFormat == ValidationFormat::PDF)
     {
-        if (aContentOUString.indexOf("isCompliant=\"true\"") == -1)
+        if (aContentOUString.indexOf("isCompliant=\"false\"") != -1)
         {
             SAL_WARN("test", aContentOUString);
             CPPUNIT_FAIL("VeraPDF validation failed: document is not 
compliant");
@@ -373,8 +373,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 6a56250017e9..2b7e3367731d 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -95,6 +95,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf160051)
 
     vcl::filter::PDFDocument aDocument;
     loadFromFile(u"tdf160051.odt");
+    skipValidation();
     save(TestFilter::PDF_WRITER, 
aMediaDescriptor.getAsConstPropertyValueList());
 
     // Parse the export result.
@@ -141,6 +142,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.
@@ -2381,7 +2383,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);
@@ -2784,7 +2785,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);
@@ -3176,7 +3176,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 69e4cce229ad..3ef2b43ff57a 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
@@ -72,6 +72,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.
@@ -141,6 +142,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.
@@ -1388,6 +1390,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.
@@ -1469,7 +1472,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);
@@ -1577,6 +1579,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.
@@ -1715,6 +1718,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;
@@ -1813,7 +1817,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);
@@ -1874,7 +1877,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);
@@ -2021,6 +2023,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.
@@ -2196,6 +2199,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.
@@ -2292,6 +2296,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.
@@ -2372,6 +2377,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.
@@ -2906,6 +2912,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.
@@ -3012,7 +3019,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);
@@ -3094,6 +3100,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.
@@ -3423,7 +3430,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);
@@ -3556,7 +3562,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);
@@ -3692,7 +3697,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);
@@ -3783,7 +3787,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);
@@ -3924,7 +3927,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);
@@ -4061,7 +4063,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);

Reply via email to