You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(component): publish native TMT reports and artifact paths - #396
Return TMT artifact locations without introducing a second test-result model.
Insert TMT's native JUnit reporter alongside existing reporters. Return flat rows with the test name, observed TMT exit code, retained artifact directory, and relative JUnit paths.
Keep the shared azldev.TestRunResult as data only; TMT execution/capture/discovery lives in tmtrunner.go. Image-test adoption is a follow-up. Preserve existing command help and examples with just one reporting sentence added.
Keep setup/runner transcripts and the native run directory; JSON stdout stays clean. Failures may have logs but no JUnit, and retain the existing nonzero command behavior.
Bound capture-pipe waiting when a descendant outlives TMT. Keep a separate per-invocation workdir root for testcloud image-store isolation.
Use one tmt E2E selector for local reporting and virtual provisioning. Only the known-broken virtual test is quarantined; when explicitly enabled it checks KVM before image construction and skips if the device is missing.
This is the reduced alternative to #395, retained for its previous discussion. It builds on #387 and uses the centralized dependency pins from #384. There is no schema version, lifecycle-state audit, recursive per-test log index, Python exporter, or custom JUnit template.
Example output
Table
Rendered through azldev's table formatter using illustrative values, without running TMT:
JUnit paths are relative to artifactDir, which also retains setup/runner logs and native TMT artifacts. exitCode is the observed TMT process exit, or null when no normal exit was observed. Report discovery is best-effort and does not override the command's execution result.
Validation
env -u TESTING_ENABLE_TMT_VIRTUAL_E2E mage e2e -target=tmt — passed, 1m34.088s. The combined selector runs real local TMT and skips the quarantined virtual test. Coverage includes native outcomes, root and multiple/empty plans, existing reporters, source preservation, dependency/RPM installation, relocatable artifacts, and bounded waits for surviving descendants. Local reporting also runs in the unfiltered E2E suite.
mage unit — changed packages passed; aggregate failed in the same nine unchanged bumpspec/release tests.
mage all — build and changed unit packages passed; stopped at those existing failures before full scenarios/quality stages.
mage docs — passed, regenerated CLI docs and schema.
MS_GOTOOLCHAIN_ALLOW_NON_LOCAL=1 GOTOOLCHAIN=go1.26.0 mage fix all — passed. The default system toolchain hits the existing linter export-data incompatibility.
MS_GOTOOLCHAIN_ALLOW_NON_LOCAL=1 GOTOOLCHAIN=go1.26.0 mage check all — passed, including lint, static, license and Python checks.
mage mutationDiff f850e76067c73dc631e444a702444ca8323f5b9a — blocked during baseline coverage by the same unchanged unit failures; no mutation result claimed.
git diff --check — passed.
After the data/runner file split and help restoration, build/changed unit packages, docs generation, and compatible-toolchain quality checks were rerun with the outcomes above; the E2E result predates that behavior-preserving split. Full scenarios were not rerun. No host-local TMT/package installation, privileged containers, image builds, KVM, or broad E2E runs were used. Virtual provisioning remains quarantined; this change tests its workdir argument isolation but does not claim a successful VM run. This host has KVM, so the missing-device skip was not exercised. The combined selector is not added to the CI matrix.
Add content assertions for the new TMT reporting guidance and local-host safety warning in internal/app/azldev/agentskill/agentskill_test.go. The existing build-component test checks bumpspec guidance, so removing this new content would go unnoticed. .github/instructions/agent-skills.instructions.md:30-42 requires a content test when editing a skill; extend the build-component coverage to assert distinctive phrases from both additions.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Human validation remains warranted because the reported E2E run predates the final runner split and successful virtual provisioning remains unverified.
No open issues 🎉
1 previously missed issue
In code that hasn't changed since last review
Align PR description with new E2E CI shard
.github/workflows/test.yml:78
This enables a fourth E2E CI shard, but the PR description explicitly states that the combined TMT selector is not added to the CI matrix. Please update the description and validation scope to reflect the CI rollout, or remove this matrix entry if enabling the job is intended as a follow-up.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Process-capture and virtual work-directory changes need human review because successful virtual provisioning remains unverified and full scenario validation is incomplete.
Insert TMT's native JUnit reporter and return flat TestRunResult rows with observed exit codes and retained artifact paths. Preserve diagnostics on failure without a separate lifecycle model or custom exporter.
Bound capture-pipe waits and isolate virtual image stores per invocation. Cover reporting and cancellation in a disposable local container through the shared tmt E2E selector, while keeping the virtual regression quarantined.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make JUnit discovery best-effort without changing runner errors, keep CSV stdout clean, enable the TMT CI shard, and align lock-file-free agent guidance.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Document the accepted limitation that suffix-based JUnit discovery does not establish report provenance.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move native report execution and private tests into internal/tmt while retaining command-level JSON and CSV coverage and both reporting follow-up fixes.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The virtual provisioning directory changes lack successful VM validation while the E2E test remains quarantined, requiring human assessment of testcloud image-store and guest artifact behavior.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The CI matrix adds a fourth tmt shard despite the PR description explicitly excluding it, leaving the implementation and documented scope inconsistent.
No open issues 🎉
Review effort: Balanced
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
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.
Summary
Return TMT artifact locations without introducing a second test-result model.
azldev.TestRunResultas data only; TMT execution/capture/discovery lives intmtrunner.go. Image-test adoption is a follow-up. Preserve existing command help and examples with just one reporting sentence added.tmtE2E selector for local reporting and virtual provisioning. Only the known-broken virtual test is quarantined; when explicitly enabled it checks KVM before image construction and skips if the device is missing.This is the reduced alternative to #395, retained for its previous discussion. It builds on #387 and uses the centralized dependency pins from #384. There is no schema version, lifecycle-state audit, recursive per-test log index, Python exporter, or custom JUnit template.
Example output
Table
Rendered through azldev's table formatter using illustrative values, without running TMT:
Columns that are empty across all rows are hidden. A dry run therefore shows only
TEST, since no process exit or artifacts exist.JSON (
-O json)Saved output from a passing local-TMT run inside the disposable container:
[ { "test": "azldev-tmt-probe", "exitCode": 0, "artifactDir": "/artifacts/work/azldev-test-840810260", "junit": [ "001-azldev-tmt-probe/native/plans/pass/report/azldev-junit/junit.xml" ] } ]JUnit paths are relative to
artifactDir, which also retains setup/runner logs and native TMT artifacts.exitCodeis the observed TMT process exit, ornullwhen no normal exit was observed. Report discovery is best-effort and does not override the command's execution result.Validation
env -u TESTING_ENABLE_TMT_VIRTUAL_E2E mage e2e -target=tmt— passed, 1m34.088s. The combined selector runs real local TMT and skips the quarantined virtual test. Coverage includes native outcomes, root and multiple/empty plans, existing reporters, source preservation, dependency/RPM installation, relocatable artifacts, and bounded waits for surviving descendants. Local reporting also runs in the unfiltered E2E suite.mage unit— changed packages passed; aggregate failed in the same nine unchanged bumpspec/release tests.mage all— build and changed unit packages passed; stopped at those existing failures before full scenarios/quality stages.mage docs— passed, regenerated CLI docs and schema.MS_GOTOOLCHAIN_ALLOW_NON_LOCAL=1 GOTOOLCHAIN=go1.26.0 mage fix all— passed. The default system toolchain hits the existing linter export-data incompatibility.MS_GOTOOLCHAIN_ALLOW_NON_LOCAL=1 GOTOOLCHAIN=go1.26.0 mage check all— passed, including lint, static, license and Python checks.mage mutationDiff f850e76067c73dc631e444a702444ca8323f5b9a— blocked during baseline coverage by the same unchanged unit failures; no mutation result claimed.git diff --check— passed.After the data/runner file split and help restoration, build/changed unit packages, docs generation, and compatible-toolchain quality checks were rerun with the outcomes above; the E2E result predates that behavior-preserving split. Full scenarios were not rerun. No host-local TMT/package installation, privileged containers, image builds, KVM, or broad E2E runs were used. Virtual provisioning remains quarantined; this change tests its workdir argument isolation but does not claim a successful VM run. This host has KVM, so the missing-device skip was not exercised. The combined selector is not added to the CI matrix.