This is an automated email from the ASF dual-hosted git repository. leginee pushed a commit to branch bazel-migration in repository https://gitbox.apache.org/repos/asf/openoffice.git
commit ab5a8f2650eb117b51d544a8271b579898942048 Author: Peter Kovacs <[email protected]> AuthorDate: Sun Aug 2 00:45:59 2026 +0200 test(writerfilter): wire the doctok GoogleTest suite //main/writerfilter:writerfilter_qa_doctok, porting GoogleTest_writerfilter_doctok.mk. The qa/cppunittests directory name is a misnomer: this suite is GoogleTest. Its four siblings (odiapi, qname, sl, xxml) are the ones still on the retired testshl harness and are not migratable. Bootstraps UNO in-process (defaultBootstrap_InitialComponentContext + the UCB ContentBroker), so it takes uno_install. RED, deliberately: testInitUno passes — 815ms of real UNO bootstrap, which is useful coverage of the fixture itself — but testOpenFile and testEvents read "<cwd>/test.doc" and no test.doc exists anywhere in the tree; the sample was never checked in (the qa dir holds only the .cxx and doctok.job). testEvents then trips a shared_ptr assert on the resulting null document. That is the suite's own missing fixture, not a build problem, so it is wired rather than withheld. Also records in CLAUDE.md what each remaining suite actually needs, so the next pass does not have to re-derive it: configmgr/qa/unit wants its own mini installation plus a unit.rdb built with //main/cpputools:regcomp and a CONFIGMGR_UNIT_FORWARD_STRING env var (which means gtest_test needs to accept a custom ure_bootstrap root and extra env, not just uno_install); cppuhelper/qa/propertysetmixin needs a UNO component DLL + its own types.idl and services.rdb; xmlsecurity/qa/certext uses test::OfficeConnection; the sal child-process suites need the `companions` hook. Co-Authored-By: Claude Opus 5 <[email protected]> --- CLAUDE.md | 22 +++++++++++++------- main/test/readme.md | 9 ++++++++ main/writerfilter/BUILD.bazel | 48 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 7 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index a913554291..7b9f7c5d39 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -96,13 +96,21 @@ test 🔨 C++ unit-test infra runnable — NOW THE FRONT-LINE TASK: br sfx2_qa_metadatable, desktop_qa_dp_version. uno_install doubles as "give me the whole office DLL closure on PATH", which beats enumerating dozens of transitive DLLs for sw/sfx-sized libraries. - STILL TODO in this sweep: configmgr/qa/unit (builds its OWN mini - installation — urebootstrap.ini + data.xcd + generated inis — so it - needs a genrule, not //main/staging:install), cppuhelper/qa/ - propertysetmixin (UNO component DLL + own types.idl + services.rdb), - xmlsecurity/qa/certext + sal child-process suites (osl/process, - rtl/bootstrap, rtl/process) which need OfficeConnection / companion - staging, and writerfilter doctok. + writerfilter_qa_doctok wired too (RED on its own missing fixture: + reads <cwd>/test.doc, never checked in; testInitUno passes). + STILL TODO, with what each actually needs: + • configmgr/qa/unit — its OWN mini installation (urebootstrap.ini + + data.xcd + 2 generated inis) plus unit.rdb = types.rdb with + configmgr.uno registered via //main/cpputools:regcomp (that tool + IS built), and env CONFIGMGR_UNIT_FORWARD_STRING=<unit.rdb>. + Needs gtest_test to accept a CUSTOM ure_bootstrap root + extra + env, not just uno_install=//main/staging:install. + • cppuhelper/qa/propertysetmixin — UNO component DLL + own + types.idl + a per-test services.rdb (packcomponents.xslt). + • xmlsecurity/qa/certext — uses test::OfficeConnection ⇒ fixture (b). + • sal child-process suites (osl/process, rtl/bootstrap, + rtl/process) — helper exe via getExecutablePath()+"/../bin"; + gtest_test's `companions` hook exists for this. testtools ⬜ (bridgetest — pure-C++ UNO bridge round-trip; cli/pyuno/java variants need rules_java — see Java bucket) qadevOOo 🔨 OOoRunner.jar built (//main/qadevOOo:OOoRunner — qadevOOo QA diff --git a/main/test/readme.md b/main/test/readme.md index 6ca14e2658..92ff1fda42 100644 --- a/main/test/readme.md +++ b/main/test/readme.md @@ -259,6 +259,15 @@ near-total failure to a small residual set — none of it a build problem: - **DNS/host dependent.** `getHostname_001`, `getSocketAddrHandle_002`, `getLocalPort_002` resolve names against whatever network the machine is on. +### Red on their own fixture, wired anyway + +- `//main/writerfilter:writerfilter_qa_doctok` — `testInitUno` passes (a real + in-process UNO bootstrap + UCB ContentBroker), but `testOpenFile` / + `testEvents` read `<cwd>/test.doc` and **no `test.doc` exists anywhere in the + tree** — the sample was never checked in (the qa dir holds only the `.cxx` and + `doctok.job`). `testEvents` then trips a `shared_ptr` assert on the null + document. That is the suite's own missing fixture, not the build. + Earlier revisions of this file listed `rtl_str`/`rtl_ustr`/`rtl_string` as NULL-deref crashes; those were since fixed (boundary checks in the tests plus `NULL` guards at the rtl entry points) and now pass. diff --git a/main/writerfilter/BUILD.bazel b/main/writerfilter/BUILD.bazel index 20a6ca71da..1d286fede3 100644 --- a/main/writerfilter/BUILD.bazel +++ b/main/writerfilter/BUILD.bazel @@ -2,6 +2,7 @@ package(default_visibility = ["//visibility:public"]) load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load(":ooxml_ns_rules.bzl", "OOXML_NS", "ooxml_ns_factory_rules") +load("//build/rules:gtest_test.bzl", "gtest_test") # ── Constants ──────────────────────────────────────────────────────────────── @@ -516,3 +517,50 @@ cc_binary( exports_files(glob(["**/*.component"])) + +# ── qa unit test ────────────────────────────────────────────────── +# doctok WW8Document event walk (qa/cppunittests/doctok). Ports +# GoogleTest_writerfilter_doctok.mk (writerfilter ucbhelper cppuhelper cppu sal +# stl). The directory name "cppunittests" is a misnomer — this suite is +# GoogleTest; its four siblings (odiapi/qname/sl/xxml) are the ones still on the +# retired testshl harness and are NOT migratable. +# +# Bootstraps UNO in-process (defaultBootstrap_InitialComponentContext + the UCB +# ContentBroker), hence uno_install. +# +# EXPECTED RED: testOpenFile/testEvents read "<cwd>/test.doc", and no test.doc +# exists anywhere in the tree (the qa dir holds only the .cxx and doctok.job) — +# the sample was never checked in. testInitUno/testEnd should pass. Wired +# anyway: the failure is the suite's own missing fixture, not the build. +gtest_test( + name = "writerfilter_qa_doctok", + srcs = ["qa/cppunittests/doctok/testdoctok.cxx"], + copts = _COPTS, + defines = _DEFINES, + deps = [ + ":writerfilter_headers", + "//main/sal:sal_headers", + "//main/cppu:cppu_headers", + "//main/cppuhelper:cppuhelper_headers", + "//main/ucbhelper:ucbhelper_headers", + "//main/udkapi:udkapi_idl_headers", + "//main/offapi:offapi_idl_headers", + "//main/stlport:stlport", + "@boost.legacy//:boost.legacy", + ], + additional_linker_inputs = [ + "//main/sal:sal_implib", + "//main/cppu:cppu3_implib", + "//main/cppuhelper:cppuhelper_implib", + "//main/ucbhelper:ucbhelperMSC_implib", + ":writerfilter_implib", + ], + linkopts = [ + "$(execpath //main/sal:sal_implib)", + "$(execpath //main/cppu:cppu3_implib)", + "$(execpath //main/cppuhelper:cppuhelper_implib)", + "$(execpath //main/ucbhelper:ucbhelperMSC_implib)", + "$(execpath :writerfilter_implib)", + ], + uno_install = "//main/staging:install", +)
