Repository navigation
Add .NET test inventory and one-to-one Go test mappings - #1263
Conversation
Extract test names from compiled .NET assemblies with go-winmd and discover Go test functions statically. Add strict one-to-one test reconciliation and separate reviewed and unreviewed Go test lists. Record 6,750 .NET tests and 413 direct Go counterparts, retaining original Go test names and completing their minor case and assertion differences. Mark the remaining 1,672 Go tests as reviewed without claiming counterparts. Preserve subscription cleanup before A2A polling fallback, retain discovered skill content, and avoid standing approval rules for denied responses.
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
The large generated inventory, hundreds of semantic test mappings, and broad cross-package changes require final human verification.
Review effort: Balanced
Findings: None
What changed in this PR
Adds .NET test inventory extraction, static Go test discovery, and strict one-to-one reconciliation, alongside behavioral fixes and expanded parity assertions.
Changes:
- Adds test-inventory and reconciliation tooling plus documentation.
- Fixes A2A fallback cleanup, skill-content retention, and denied approval handling.
- Expands workflow, provider, agent, and compaction tests.
| File | Description |
|---|---|
cmd/internal/testinventory/inventory.go |
Defines shared test inventory schema. |
cmd/dotnetsymbols/{main,model,extract,tests}.go |
Extracts test declarations and provenance. |
cmd/dotnetsymbols/README.md |
Documents test extraction. |
cmd/symbolmap/{main,reconcile,gotests,testmapping}.go |
Adds discovery and reconciliation commands. |
docs/dotnet-go-sdk-feature-comparison.md |
Documents test mapping semantics. |
provider/a2aprovider/a2a.go |
Releases subscriptions before fallback polling. |
agent/skills/fsskills/source.go |
Retains discovered skill content. |
agent/harness/toolapproval/toolapproval.go |
Prevents denied responses creating rules. |
workflow/**/*_test.go |
Strengthens workflow behavior and concurrency assertions. |
provider/**/*_test.go |
Expands provider contract coverage. |
agent/**/*_test.go |
Expands agent, skill, harness, and compaction coverage. |
message/**/*_test.go |
Strengthens message ownership and forwarding tests. |
tool/agenttool/agenttool_test.go |
Verifies metadata, panic, and error contracts. |
internal/telemetry/telemetry_test.go |
Isolates helper-process environment state. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This comment has been minimized.
This comment has been minimized.
Avoid shadowing copy, normalize the module validation diagnostic, use a tagged switch in the reconciliation test, and remove an unused checkpoint helper.
API consistency review
Changed Go contractNo exported Go API was added, renamed, or changed. The diff is overwhelmingly tests, docs, and internal dev tooling (
Upstream evidence reviewed
AssessmentThe two behavioral fixes (tool-approval denial no longer creates a standing approval rule, and the A2A subscription is released before the
|
Summary
Add a name-only inventory of 6,750 .NET test methods from 45 compiled test assemblies at microsoft/agent-framework commit 0c9944cc9f577d51277ac7c55dbc388b60a577af. Extraction uses go-winmd and does not execute .NET tests. Existing API inventory entries remain unchanged.
Add static Go test discovery and strict one-to-one test reconciliation. The catalog records 413 direct .NET-to-Go test pairs, 1,672 reviewed-unpaired Go tests, and no unreviewed Go tests across the 2,085 current source identities. Reviewed-unpaired means source comparison was completed without an eligible direct counterpart; it is not a claim that an SDK feature is missing. Mappings require the same primary setup, action, representable cases, and golden observations, allowing minor language/API differences.
Complete scoped cases and assertions in existing tests while retaining original Go test names and existing coverage. Include three fixes exposed during alignment: release the A2A subscription before polling fallback, retain skill content read during discovery instead of reopening the file, and avoid creating standing approval rules from denied responses. Synchronize the Foundry header-isolation test's shared observations.
Rebased the pending work onto main at 3071afa. The earlier workflow-only branch commits are not included. Existing main API assessments and SDK changes are preserved.
Validation
go vetfor all 30 affected packages.