Skip to content

test: extend downstream coverage compatibility checks - #47

Open
AlexanderLanin wants to merge 3 commits into
eclipse-score:mainfrom
etas-contrib:test/extend-downstream-consumers
Open

AlexanderLanin wants to merge 3 commits into
eclipse-score:mainfrom
etas-contrib:test/extend-downstream-consumers

Conversation

@AlexanderLanin

@AlexanderLanin AlexanderLanin commented Oct 26, 2026 •

Copy link
Copy Markdown
Member

Coverage tool changes should be checked against all current S-CORE consumers so integration problems are caught before reaching downstream repositories.

Add compatibility checks for inc_security_crypto, inc_someip_gateway, kyron, logging, persistency, and time alongside baselibs and lifecycle. A shared parametrized pytest target runs one consumer per CI job and retains separate reports. The checks require generated reports with measured coverage, while allowing temporary lockfile updates and leaving consumer-specific coverage thresholds to downstream CI.

Publish concise command summaries and retain full Bazel logs to make downstream failures easier to diagnose. Invalid UTF-8 in consumer output no longer turns a successful build into a test failure.

Fixes #41.

Check six more consumer repositories with one parametrized test target.
Keep reports separate for each consumer and require measured coverage
without enforcing consumer-specific coverage thresholds.

Signed-off-by: Alexander Lanin <Alexander.Lanin@etas.com>
@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
2026/10/26 13:51:47 Downloading https://releases.bazel.build/8.6.0/release/bazel-8.6.0-linux-x86_64...
Extracting Bazel installation...
Starting local Bazel server (8.6.0) and connecting to it...
INFO: Invocation ID: 2d0edf59-394b-408d-80a6-4ffc6567c8dd
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Loading: 
Loading: 0 packages loaded
Loading: 0 packages loaded
Loading: 0 packages loaded
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)

Analyzing: target //:license-check (5 packages loaded, 6 targets configured)

Analyzing: target //:license-check (5 packages loaded, 6 targets configured)

Analyzing: target //:license-check (5 packages loaded, 6 targets configured)

Analyzing: target //:license-check (5 packages loaded, 6 targets configured)

Analyzing: target //:license-check (5 packages loaded, 6 targets configured)

Analyzing: target //:license-check (5 packages loaded, 6 targets configured)

Analyzing: target //:license-check (5 packages loaded, 6 targets configured)

Analyzing: target //:license-check (5 packages loaded, 6 targets configured)

Analyzing: target //:license-check (13 packages loaded, 10 targets configured)

Analyzing: target //:license-check (71 packages loaded, 10 targets configured)

Analyzing: target //:license-check (89 packages loaded, 10 targets configured)

Analyzing: target //:license-check (91 packages loaded, 10 targets configured)

Analyzing: target //:license-check (151 packages loaded, 2342 targets configured)

Analyzing: target //:license-check (151 packages loaded, 3277 targets configured)

Analyzing: target //:license-check (151 packages loaded, 3277 targets configured)

Analyzing: target //:license-check (151 packages loaded, 3277 targets configured)

Analyzing: target //:license-check (151 packages loaded, 3277 targets configured)

Analyzing: target //:license-check (151 packages loaded, 3277 targets configured)

Analyzing: target //:license-check (160 packages loaded, 6521 targets configured)

Analyzing: target //:license-check (160 packages loaded, 6521 targets configured)

Analyzing: target //:license-check (170 packages loaded, 6579 targets configured)

Analyzing: target //:license-check (170 packages loaded, 6579 targets configured)

Analyzing: target //:license-check (173 packages loaded, 8466 targets configured)

Analyzing: target //:license-check (173 packages loaded, 8466 targets configured)

Analyzing: target //:license-check (176 packages loaded, 11921 targets configured)

Analyzing: target //:license-check (178 packages loaded, 11949 targets configured)

Analyzing: target //:license-check (178 packages loaded, 11949 targets configured)

Analyzing: target //:license-check (178 packages loaded, 11949 targets configured)

Analyzing: target //:license-check (178 packages loaded, 11949 targets configured)

Analyzing: target //:license-check (178 packages loaded, 11949 targets configured)

Analyzing: target //:license-check (178 packages loaded, 11949 targets configured)

INFO: Analyzed target //:license-check (179 packages loaded, 12076 targets configured).
[12 / 16] JavaToolchainCompileClasses external/rules_java+/toolchains/platformclasspath_classes; 0s disk-cache, processwrapper-sandbox ... (2 actions running)
[14 / 16] JavaToolchainCompileBootClasspath external/rules_java+/toolchains/platformclasspath.jar; 0s disk-cache, processwrapper-sandbox
INFO: Found 1 target...
Target //tools:license.check.license_check up-to-date:
  bazel-bin/tools/license.check.license_check
  bazel-bin/tools/license.check.license_check.jar
INFO: Elapsed time: 50.495s, Critical Path: 2.46s
INFO: 16 processes: 12 internal, 3 processwrapper-sandbox, 1 worker.
INFO: Build completed successfully, 16 total actions
INFO: Running command line: bazel-bin/tools/license.check.license_check tools/formatted.txt <args omitted>
usage: org.eclipse.dash.licenses.cli.Main [-batch <int>] [-cd <url>]
       [-confidence <int>] [-ef <url>] [-excludeSources <sources>] [-help] [-lic
       <url>] [-project <shortname>] [-repo <url>] [-review] [-summary <file>]
       [-timeout <seconds>] [-token <token>]

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Nested Bazel commands still inherit the crypto consumer’s strict lockfile mode, which can block dependency resolution before coverage runs.

1 open issue
What changed in this PR

Expands downstream compatibility testing from two to eight S-CORE consumers, using a shared test to catch coverage-tool integration failures.

Changes:

  • Replaces separate consumer tests with one parametrized coverage test.
  • Runs each consumer in a separate CI job and retains consumer-specific reports.
  • Removes explicit strict lockfile flags and consumer-specific coverage thresholds while preserving measured-coverage checks.
File Description
tests/​compatibility/​test_lifecycle.py Removes the standalone lifecycle test.
tests/​compatibility/​test_consumers.py Adds shared coverage checks for eight consumers.
tests/​compatibility/​test_baselibs.py Removes the standalone baselibs test.
tests/​compatibility/​BUILD Defines the shared parametrized test target.
tests/​compatibility/​_consumer_workspace.py Separates retained reports by consumer and removes lockfile preparation.
README.md Documents selecting an individual consumer.
.github/​workflows/​compatibility_tests.yml Expands the CI matrix and updates report paths.

Review effort: Balanced

Comment thread tests/compatibility/test_consumers.py Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Documentation preview for this pull request is available at:
pr-47: https://eclipse-score.github.io/coverage_tool/pr-47/

@AlexanderLanin

Copy link
Copy Markdown
Member Author

The time failure exposes an existing breakage in eclipse-score/time main on a fresh checkout. Dependency resolution aborts before any tests run because score_devcontainer v1.11.1 no longer matches its registry checksum:

  • Registry expects sha256-B9caGwH1Ff/asDuyQBEwE8KRRYIozv4NYwdwChraNwY=.
  • A fresh download returns sha256-XhiGdP4K7IVUADCqAxURtnK6wpFTt1JsL+Jn9Xl/Md4=; I verified this independently.

Failing compatibility job. The last successful coverage run on time/main also resolved v1.11.1 but restored a repository cache, which likely masks the broken download. The published archive/registry entry needs to be corrected upstream.

Consumer bazelrc files can enforce strict lockfile checks. Override that
setting for both nested Bazel commands so the local coverage-tool override
can update the temporary workspace lockfile.

Signed-off-by: Alexander Lanin <Alexander.Lanin@etas.com>
Copilot AI balanced review requested due to automatic review settings October 26, 2026 13:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The six new downstream checks need successful integration CI results and human validation of their repository-specific environment requirements.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

Decode consumer output with replacement for invalid UTF-8 so successful
builds do not fail while their output is read. Retain complete Bazel logs
and publish concise command summaries with early errors and the log tail.

Signed-off-by: Alexander Lanin <Alexander.Lanin@etas.com>
Copilot AI balanced review requested due to automatic review settings October 26, 2026 13:51

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The six new downstream pipelines depend on live repositories and toolchains, so their CI results need human confirmation.

No open issues 🎉

Review effort: Balanced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

extend downstream test repos

2 participants