Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions eval/COVERAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Every column is derived — families from `ObjectTypeRegistry`, capabilities fro
file cannot claim coverage that no longer exists. Regenerate with
`d365fo eval coverage --write`; CI runs `--check`.

**42 of 70 leaves complete.**
**42 of 71 leaves complete.**

## AOT families

Expand All @@ -30,7 +30,7 @@ file cannot claim coverage that no longer exists. Regenerate with
| `AxEdtExtension` | edtextension | — | ✅ | ✅ | — | `L2-edt-extension` | generate extension |
| `AxEnum` | enum | ✅ | ✅ | ✅ | `event-handler-authoring`, `object-extension-authoring` | `L0-enum-basic`, `L0-enum-non-extensible` | generate enum |
| `AxEnumExtension` | enumextension | — | ✅ | ✅ | — | `L2-enum-extension` | generate extension |
| `AxForm` | form | ✅ | ✅ | ✅ | `coc-extension-authoring`, `data-entity-scaffolding`, `event-handler-authoring`, `form-pattern-scaffolding`, `label-translation`, `model-dependency-and-coupling`, `object-extension-authoring`, `review-and-checkpoint-workflow`, `security-hierarchy-trace`, `table-scaffolding`, `x++-class-authoring`, `xpp-best-practice-rules`, `xpp-class-and-method-rules`, `xpp-database-queries`, `xpp-statement-and-type-rules` | `L1-form-basic`, `L1-form-details-master`, `L1-form-details-transaction`, `L1-form-dialog`, `L1-form-list-page`, `L1-form-lookup`, `L1-form-simplelist-details`, `L1-form-table-of-contents`, `L1-form-workspace`, `L2-control-method-basic`, `L2-datasource-method-basic` | generate form |
| `AxForm` | form | ✅ | ✅ | ✅ | `coc-extension-authoring`, `data-entity-scaffolding`, `event-handler-authoring`, `form-pattern-scaffolding`, `label-translation`, `model-dependency-and-coupling`, `object-extension-authoring`, `review-and-checkpoint-workflow`, `security-hierarchy-trace`, `table-scaffolding`, `x++-class-authoring`, `xpp-best-practice-rules`, `xpp-class-and-method-rules`, `xpp-database-queries`, `xpp-statement-and-type-rules` | `L1-form-basic`, `L1-form-details-master`, `L1-form-details-transaction`, `L1-form-dialog`, `L1-form-list-page`, `L1-form-lookup`, `L1-form-simplelist-details`, `L1-form-table-of-contents`, `L1-form-workspace`, `L2-control-method-basic`, `L2-datasource-method-basic`, `L2-form-clone-basic` | generate form |
| `AxFormExtension` | formextension | ✅ | ✅ | ✅ | `form-pattern-scaffolding`, `review-and-checkpoint-workflow` | `L2-form-extension-basic` | generate extension |
| `AxFormPart` | formpart | — | — | — | — | — | — |
| `AxLabelFile` | labelfile | ✅ | — | — | `label-translation` | — | — |
Expand Down Expand Up @@ -75,6 +75,7 @@ whether it is taught and proven.
| `generate form` | AxForm | ✅ | ✅ | `form-pattern-scaffolding` | `L1-form-basic`, `L1-form-details-master`, `L1-form-details-transaction`, `L1-form-dialog`, `L1-form-list-page`, `L1-form-lookup`, `L1-form-simplelist-details`, `L1-form-table-of-contents`, `L1-form-workspace` |
| `generate datasource-method` | AxForm | — | ✅ | — | `L2-datasource-method-basic` |
| `generate control-method` | AxForm | — | ✅ | — | `L2-control-method-basic` |
| `generate form-clone` | AxForm | — | ✅ | — | `L2-form-clone-basic` |
| `generate simple-list` | deprecated alias | — | — | — | — |
| `generate entity` | AxDataEntityView | ✅ | ✅ | `data-entity-scaffolding`, `integration-dmf-dualwrite`, `integration-patterns` | `L2-virtual-entity-basic` |
| `generate extension` | AxTableExtension, AxFormExtension, AxEdtExtension, AxEnumExtension, AxViewExtension, AxQuerySimpleExtension, AxDataEntityViewExtension, AxSecurityDutyExtension, AxSecurityRoleExtension | ✅ | ✅ | `forms-and-navigation`, `object-extension-authoring`, `xpp-best-practice-rules` | `L2-edt-extension`, `L2-enum-extension`, `L2-form-extension-basic`, `L2-security-duty-extension`, `L2-security-role-extension`, `L2-table-extension` |
Expand Down Expand Up @@ -106,6 +107,7 @@ cannot build at all are omitted — they are a generation gap, not a coverage ga

- **control-method** (capability) — no topic names it
- **datasource-method** (capability) — no topic names it
- **form-clone** (capability) — no topic names it
- **map** (capability) — no topic names it
- **simple-list** (capability) — no topic names it; no case with a reviewed golden
- **systest** (capability) — no topic names it
Expand Down
13 changes: 13 additions & 0 deletions eval/cases/L2-form-clone-basic.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"id": "L2-form-clone-basic",
"title": "Clone a two-datasource details-transaction form under a new name",
"tier": 2,
"instruction": "Clone the existing form eval/goldens/L1-form-details-transaction/ConFmVehicleServiceOrder.xml as ConFmVehicleServiceOrderInquiry. The clone keeps the original's pattern, both datasources and their join, and its whole control tree — only the form's own self-references (root name, class declaration, formStr) take the new name. Use only the d365fo CLI (search/get/generate/validate) — do not hand-write XML.",
"canonical_args": ["generate", "form-clone", "ConFmVehicleServiceOrderInquiry", "--from", "eval/goldens/L1-form-details-transaction/ConFmVehicleServiceOrder.xml"],
"target_artifact_types": ["AxForm"],
"golden_path": "L2-form-clone-basic",
"tags": ["form-clone", "form", "metadata"],
"ignore": [],
"requires_fixture_index": false,
"golden_pending": false
}
Loading
Loading