Run all unit tests via Bazel wildcards instead of acceptlist - #52
Open
Chahult wants to merge 7 commits into
Open
Run all unit tests via Bazel wildcards instead of acceptlist#52Chahult wants to merge 7 commits into
Chahult wants to merge 7 commits into
Conversation
Replace the acceptlist-JSON-driven test/clang-tidy/coverage target lists in test.yml, static-analysis.yml and coverage_report.yml with wildcard //score/config_management/... invocations, excluding the known non-OSS-buildable factory unit_tests_mw_com target and the dependability safety-metadata targets. Remove the now-unused deps-acceptlist-check.yml workflow and deps_acceptlist.json. Wildcard testing surfaced that score/config_management/config_provider is currently broken against its own pinned score_communication dependency (OptionalProxyData collapsed to a plain Optional<T> alias, replaced by ProxyFuture) and references internal-only targets/packages that don't exist in the OSS tree. Since score/config_management/** is synced from an internal source and can't be edited directly here, these fixes are shipped as bazel/patches/001-adapt-proxy-api-and-remove-internal-targets.patch and applied transiently in CI (git apply, with a --check guard so it becomes a no-op once the fix syncs in for real), mirroring the existing wire_unit_test_to_lobster.patch pattern in docs.yml. Locally verified with the patch applied: bazel build and bazel test both succeed for //score/config_management/... with the same exclusions used in CI (20/20 tests pass).
Chahult
requested review from
LittleHuba,
antonkri,
castler,
michaelsaborov and
ramceb
as code owners
August 12, 2026 11:17
License Check Results🚀 The license check job ran with the Bazel command: bazel run //:license-checkStatus: Click to expand output |
The docs job builds //score/config_management/dependability:config_management_rst, whose component() targets reference the unit()-wrapped config_daemon_app_unit / config_provider_details_unit targets from wire_unit_test_to_lobster.patch. Those unit() targets pull in the :details cc_library as `implementation`, which requires actually compiling config_provider_impl.cpp - but only wire_unit_test_to_lobster.patch was applied in docs.yml, not bazel/patches/001-adapt-proxy-api-and-remove-internal-targets.patch, so the build hit the same OptionalProxyData/ProxyFuture compile error fixed elsewhere. Chain a second git-apply (with the same --check no-op guard) for 001-adapt-proxy-api-and-remove-internal-targets.patch before `bazel run //:docs`. Locally verified: with both patches applied, `bazel build //score/config_management/dependability/...` (which //:docs depends on via config_management_rst) now completes successfully, including the full sphinx/LOBSTER doc build.
score_communication's ProvidedServices dynamic_cast lookup bug (fixed upstream in commit 9a91fc9528070a2358becc042443b84346651fc7 on Chahult/communication.git, branch fix/v0.2.1_provided_service_container_count) caused the real config_daemon binary to crash at runtime with "ConfigDaemon::Run Failed to create InitialQualifierStateSender callback" (exit code 1), since GetServices<>() always returned nullptr regardless of whether the service had actually been registered. Bump the pin to pick up that fix, and fix the last 2 remaining unit_test_mw_com test call sites that used GetServices<ProvidedServiceDecorator> directly instead of GetServices<ProvidedServiceBuilder::DecoratorType> (the only alias consistent with internal storage), which were still failing. Verified: all 10/10 unit_test_mw_com tests pass, and the real config_daemon binary now runs successfully instead of crashing.
|
The created documentation from the pull request is available at: docu-html |
…erService is unavailable Factory::CreateLastUpdatedParameterSetSender and Factory::CreateInitialQualifierStateSender now return a valid no-op callback (logged as a warning) instead of an empty callback when the mw::service ProvidedServiceContainer does not contain an InternalConfigProviderService. This moves the "tolerate missing service callback" behavior from the caller (ConfigDaemon::Run) into the factory, the actual root cause. Updated CreateLastUpdatedParameterSetSenderFail and CreateInitialQualifierStateSenderFail unit tests to assert the new non-empty no-op callback behavior. Validated locally against the exact CI test.yml invocation (bazel test --config=host_gcc --test_tag_filters=-mw_com //score/config_management/... with the existing explicit excludes): 20/20 tests pass. unit_test_mw_com (excluded from CI via the "mw_com" tag) also passes standalone: 10/10 tests.
…hunks
The score_communication ProvidedServices dynamic_cast fix (already pinned
in MODULE.bazel) means config_provider_impl.{cpp,h}, its test, and
factory_mw_com.h now compile and pass their unit tests against the
OSS mw::service API as-is -- the OptionalProxyData -> ProxyFuture
adaptation is no longer needed and required no patch or other changes.
Verified locally: bazel build/test of config_provider/code/config_provider/details
and factory_mw_com succeed unpatched, and the full CI test invocation
(bazel test --config=host_gcc --test_tag_filters=-mw_com //score/config_management/...
with existing excludes) still passes 20/20 with the reduced patch.
The remaining patch content (config_provider/BUILD internal-target removals,
config_daemon/code/BUILD + app/details/BUILD lifecycle deps) is still required
until the corresponding SPP->OSS copybara sync lands.
Repin MODULE.bazel's score_communication git_override from the personal fork to the official upstream commit (899981566d9b07b625e7a76d755f04bda47379d7, eclipse-score/communication.git), which already includes the ProvidedServices dynamic_cast type-identity fix (merged PR #749). Revert factory_mw_impl.cpp/factory_mw_impl_test.cpp GetServices<> call sites from ProvidedServiceBuilder::DecoratorType back to ProvidedServiceDecorator to match upstream's actual merged API shape. 4/10 unit_test_mw_com sub-tests still fail against the OSS communication stub backend due to a structural concrete-vs-interface dynamic_cast limitation; already excluded via the existing --test_tag_filters=-mw_com. config_provider_impl.cpp fails to compile against pure upstream because it depends on OptionalProxyData::GetProxyFuture()/StopServiceDiscovery(), which only ever existed in the fork and was never upstreamed. Rather than expanding the OSS-only compatibility patch, exclude the affected targets (and their transitively-dependent test_suite aggregators) from CI in test.yml and coverage_report.yml, re-adding the unaffected sibling packages that would otherwise be swept up by Bazel's recursive test_suite exclusion semantics. Verified locally: bazel test exits 0 with the same 19/19 passing tests as before the pin change.
Simplify to a blanket -//score/config_management/config_provider/... exclusion in both test.yml and coverage_report.yml, replacing the fine-grained unit_tests_host/details/factory/config_provider_mw_com exclusion + sibling re-inclusion. This intentionally also drops CI coverage of config_provider/code/config_provider/error, parameter_set, persistency, and proxies unit tests for now, in exchange for a much simpler, easier to reason about CI exclusion. Verified locally (with the OSS-only patch applied, matching CI): bazel test exits 0, 14/14 remaining (config_daemon-side) tests pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace the acceptlist-JSON-driven test/clang-tidy/coverage target lists in test.yml, static-analysis.yml and coverage_report.yml with wildcard //score/config_management/... invocations, excluding the known non-OSS-buildable factory unit_tests_mw_com target and the dependability safety-metadata targets. Remove the now-unused deps-acceptlist-check.yml workflow and deps_acceptlist.json.
Wildcard testing surfaced that score/config_management/config_provider is currently broken against its own pinned score_communication dependency (OptionalProxyData collapsed to a plain Optional alias, replaced by ProxyFuture) and references internal-only targets/packages that don't exist in the OSS tree. Since score/config_management/** is synced from an internal source and can't be edited directly here, these fixes are shipped as bazel/patches/001-adapt-proxy-api-and-remove-internal-targets.patch and applied transiently in CI (git apply, with a --check guard so it becomes a no-op once the fix syncs in for real), mirroring the existing wire_unit_test_to_lobster.patch pattern in docs.yml.
Locally verified with the patch applied: bazel build and bazel test both succeed for //score/config_management/... with the same exclusions used in CI (20/20 tests pass).