Skip to content

Migrate coverage assertions to end-to-end pytest cases - #20

Closed
AlexanderLanin wants to merge 1 commit into
eclipse-score:testing/end-to-end-pytest-setupfrom
etas-contrib:testing/black-box-tests
Closed

AlexanderLanin wants to merge 1 commit into
eclipse-score:testing/end-to-end-pytest-setupfrom
etas-contrib:testing/black-box-tests

Conversation

@AlexanderLanin

@AlexanderLanin AlexanderLanin commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

Why

Build on the pytest foundation in #33 to make each LLVM and gcov coverage check individually visible and traceable to requirements. This PR targets the setup branch so its diff focuses on migrating the coverage assertions.

Changes

  • Migrate the shell assertions to 46 named and parametrized pytest cases for coverage gates, source mapping, platform selection, HTML, archives, gcov filtering and fault injection; retain the initial CLI case from Set up end-to-end pytest with CI and requirement traceability #33.
  • Collect LLVM and gcov reports once per session and reuse them through backend-specific fixtures and assertion helpers.
  • Make the shell entry point a shortcut to the pytest target, switch CI coverage uploads to the pytest artifacts and document the 47-case suite.

@github-actions

github-actions Bot commented Oct 2, 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/08 23:59:26 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: 99ff702f-3208-4524-9b38-948153d5c0fa
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
Analyzing: target //:license-check (1 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 (25 packages loaded, 10 targets configured)

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

Analyzing: target //:license-check (131 packages loaded, 367 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 (151 packages loaded, 3277 targets configured)

Analyzing: target //:license-check (161 packages loaded, 7244 targets configured)

Analyzing: target //:license-check (166 packages loaded, 9773 targets configured)

Analyzing: target //:license-check (167 packages loaded, 9786 targets configured)

Analyzing: target //:license-check (167 packages loaded, 9786 targets configured)

Analyzing: target //:license-check (167 packages loaded, 9786 targets configured)

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

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

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

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

Analyzing: target //:license-check (177 packages loaded, 11832 targets configured)

Analyzing: target //:license-check (177 packages loaded, 11832 targets configured)

Analyzing: target //:license-check (177 packages loaded, 11832 targets configured)

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

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

Analyzing: target //:license-check (178 packages loaded, 11948 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
[15 / 16] Building tools/license.check.license_check.jar (); 0s disk-cache, multiplex-worker
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.557s, Critical Path: 2.42s
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>]

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

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

Comment thread tools/integration_tests/conftest.py Outdated
import pytest
from _blackbox_support import CoverageReport, collect_report

_REPOSITORY_ROOT = Path(__file__).resolve().parents[2]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Small thing: this only works because the runfiles entry is a symlink into the source tree (.resolve() follows it) and bazel happens to be on PATH inside the test. Fine on the GitHub runners with tags = ["local"], but it would break under remote execution or with non-symlinked runfiles. Could you add a comment here saying that, and maybe fail with a clear message if the resolved path has no MODULE.bazel? Otherwise someone will chase a weird copytree error one day.

@AlexanderLanin
AlexanderLanin force-pushed the testing/black-box-tests branch from af5d880 to 1884725 Compare October 8, 2026 23:20
@AlexanderLanin AlexanderLanin changed the title Add traceable pytest black-box coverage scenarios Migrate end-to-end coverage checks to traceable pytest cases Oct 8, 2026
@AlexanderLanin
AlexanderLanin force-pushed the testing/black-box-tests branch from 1884725 to 07f3b11 Compare October 8, 2026 23:59
@AlexanderLanin AlexanderLanin changed the title Migrate end-to-end coverage checks to traceable pytest cases Migrate coverage assertions to end-to-end pytest cases Oct 8, 2026
@AlexanderLanin
AlexanderLanin changed the base branch from main to testing/end-to-end-pytest-setup October 8, 2026 23:59
@MaximilianSoerenPollak
MaximilianSoerenPollak deleted the branch eclipse-score:testing/end-to-end-pytest-setup October 9, 2026 16:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

3 participants