Skip to content

Added Linux coverage and Win64 regression gates - #106

Open
fdesbiens wants to merge 5 commits into
eclipse-threadx:devfrom
fdesbiens:ci-regression-gate
Open

fdesbiens wants to merge 5 commits into
eclipse-threadx:devfrom
fdesbiens:ci-regression-gate

Conversation

@fdesbiens

@fdesbiens fdesbiens commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

FileX pull requests to dev had no regression gate. The existing workflow covered master only, measured four of nine Linux configurations, and did not run the Win64 simulator suite; floating dependency and installer behavior could hide failures. The existing test RAM driver and several standalone tests also failed to compile with MSVC.

This change gates dev and master with pinned actions and ThreadX, all nine Linux coverage configurations, a separate Win64 job, and master-only Pages deployment. It aligns the MSVC test buffer declarations with their allocations and removes zero-length buffers from configurations that do not use them. The merged report must meet 99.9% line and 99.4% branch coverage; missing or empty reports fail. The partition regression test uses early exits for distinct failure codes (MISRA C:2012 Rule 15.5 exception) and a local declaration of an internal function to test it directly (Rule 8.5 exception).

An untouched GCC 14.3.0 baseline passed 136/136 in all nine Linux configurations, with four nonempty legacy coverage reports. PR CI passed 137/137 tests in every Linux and Win64 configuration (1,233 tests on each platform). CTest durations in seconds, Linux/Win64: default_build_coverage 14.62/5.82, no_cache_build 9.18/4.04, no_cache_standalone_build 8.65/3.54, fault_tolerant_build_coverage 208.14/60.77, no_check_build 13.78/6.06, no_cache_fault_tolerant_build 179.43/53.96, standalone_build_coverage 13.79/5.20, standalone_fault_tolerant_build_coverage 118.90/33.45, and standalone_no_cache_fault_tolerant_build 103.40/27.58. All nine coverage XML/JSON pairs were nonempty; the merged artifact contains 203 repository-relative source files, HTML, 7,642/7,647 lines (99.93%), and 8,203/8,245 branches (99.49%). The sample RAM driver remains excluded from coverage because regression tests use a fault-injection driver. The five uncovered measured lines are three in a FAT read failure path in file writing and one each in the no-cache sector helper and a fault-tolerant sector read error path. A forced failing test returned runner status 8; missing and empty reports, a failed dependency fetch, and lowered line or branch coverage failed as expected. Installer retries stayed bounded. Actionlint, ShellCheck, and whitespace checks passed. Both deployment jobs were skipped on the PR.

FileX's regression workflow ran only for master, measured four of nine Linux
configurations, and did not run the Win64 simulator suite. Its floating
ThreadX checkout and legacy installer could drift or conceal failures.

The workflow now gates dev and master with pinned dependencies, all nine Linux
coverage configurations, and a separate Win64 job; only a successful master
run deploys Pages. Coverage requires at least 99.9% lines and 99.4% branches.
The new partition test uses early exits for distinct failure codes (MISRA
C:2012 Rule 15.5 exception) and a local declaration of an internal function
to test it directly (Rule 8.5 exception).

GCC 14.3.0 passed 137/137 tests in each Linux configuration. The merged report
has 7,642/7,647 lines and 8,203/8,245 branches. A forced failing test returned
status 8; empty or missing reports and a failed dependency fetch failed as
expected. Installer retries stayed bounded. Actionlint, ShellCheck, and diff
whitespace checks passed. Win64 awaits CI.

Assisted-by: Codex (GPT-6) <noreply@openai.com>
GitHub rejected the regression workflow before starting any job because it
validates permissions requested by every job in a called workflow, including
a deployment job disabled for this caller.

Grant the caller the Pages and OIDC permission ceiling required for validation.
The called test job still limits its own token, and the called deployment job
remains disabled; FileX deploys only after a successful master run.

The PR run exposed the permission error before jobs were scheduled. Actionlint
and diff whitespace checks passed; CI awaits this correction.

Assisted-by: Codex (GPT-6) <noreply@openai.com>
The Win64 regression build failed because the test RAM driver's header declared
four buffers as arrays while its MSVC implementation allocates pointers.

Declare pointer types for MSVC and retain the array types used by other
compilers. The declarations now match the storage in each configuration.

The GitHub Win64 build exposed the four conflicting declarations. Header type
checks passed in normal, standalone, MSVC, and MSVC standalone modes; all nine
GCC 14 Linux configurations rebuilt successfully. Win64 CI awaits this fix.

Assisted-by: Codex (GPT-6) <noreply@openai.com>
MSVC stopped the standalone regression build because two tests declared
fault-tolerant buffers with a size of zero when that feature was disabled.

Declare those buffers only for configurations that enable fault tolerance.
Their uses are already limited to those configurations.

The GitHub Win64 build identified both compile errors. All nine GCC 14 Linux
configurations rebuilt, and both affected tests passed in every configuration
(18/18 targeted tests). Win64 CI awaits this fix.

Assisted-by: Codex (GPT-6) <noreply@openai.com>
MSVC stopped at another standalone test that declared a fault-tolerant buffer
with a size of zero. A scan found three remaining declarations with this shape.

Declare those buffers only when fault tolerance is enabled, matching the code
that uses them.

All nine GCC 14 Linux configurations rebuilt, and the three affected tests
passed in every configuration (27/27 targeted tests). Win64 CI awaits this fix.

Assisted-by: Codex (GPT-6) <noreply@openai.com>

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant