CI: add path-scoped Windows C++ smoke gates to improve UT coverage and feedback time#11170
Open
tangkelu wants to merge 1 commit into
Open
CI: add path-scoped Windows C++ smoke gates to improve UT coverage and feedback time#11170tangkelu wants to merge 1 commit into
tangkelu wants to merge 1 commit into
Conversation
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.
Problem
This PR targets two concrete PR quality-gate problems in the fork:
libslic3rchanges could be merged without relevant PR-time UT / smoke validationThe goal of this PR is to improve both coverage and feedback time, without changing production business behavior for the sake of testing.
Approach
This PR does not split code artificially just to make tests pass faster.
Instead, it follows two rules:
In parallel, Windows dependency compilation is separated into a reusable prebuild workflow so PR-time smoke runs do not need to rebuild third-party dependencies each time.
Before / after
Before
Before this change, the Windows C++ smoke lane behaved largely as one large validation pass.
Representative full run:
https://github.com/tangkelu/BambuStudio/actions/runs/27196104449/job/80288050609
Result:
2026-06-09T09:13:31Z2026-06-09T10:15:29ZThat run built the full smoke surface sequentially, including:
This provided coverage, but the PR feedback loop was still too long.
After
After this change, the gate is split into:
Representative dependency prebuild run:
https://github.com/tangkelu/BambuStudio/actions/runs/26940003094/job/79478878128
Result:
2026-06-04T08:22:56Z2026-06-04T09:24:15ZA newer representative push-triggered deps run on the updated workflow:
https://github.com/tangkelu/BambuStudio/actions/runs/27607331263
Result:
2026-06-16Representative full Windows C++ smoke run after the workflow/runtime fixes:
https://github.com/tangkelu/BambuStudio/actions/runs/27607622617/job/81623556570
Result:
2026-06-16T09:22:28Z2026-06-16T10:15:08ZThis full run completed successfully and built / ran the whole smoke surface, including:
Practical effect
So the quality gate changes from:
This improves the gate in two ways:
libslic3rchange areasEven for full smoke execution, the representative full Windows run improved from about 1h 2m to about 53m.
What changed
1. Add reusable Windows dependency prebuild
2. Add path-scoped Windows C++ smoke gates
3. Migrate high-value legacy UT / smoke coverage
Stable legacy
tests/fff_printcases were migrated into focused smoke targets, including coverage for:Cases that are not suitable for fast PR smoke remain outside the fast gate.
4. Expose smaller test surfaces through real responsibility boundaries
Production/test surfaces in
libslic3rwere split only along real responsibilities and dependency boundaries so that smoke targets can be composed explicitly and maintained independently.The intent is to preserve business behavior while making targeted PR-time validation possible.
Validation
Representative public runs:
Full smoke before
https://github.com/tangkelu/BambuStudio/actions/runs/27196104449/job/80288050609
about 1h 2m
Dependency prebuild
https://github.com/tangkelu/BambuStudio/actions/runs/26940003094/job/79478878128
about 1h 1m
https://github.com/tangkelu/BambuStudio/actions/runs/27607331263
about 50m 35s
Full smoke after
https://github.com/tangkelu/BambuStudio/actions/runs/27607622617/job/81623556570
about 52m 57s
Other supporting runs
https://github.com/tangkelu/BambuStudio/actions/runs/27607622354
passed
Reviewer notes
This PR is large because it combines:
Recommended review order:
The main review question is not "were tests added", but: