Keep global registrations out of item-local composition

This commit is contained in:
2026-10-24 13:59:34 +00:00
parent 571d063675
commit e94a0642ff
4 changed files with 91 additions and 12 deletions

View File

@@ -93,7 +93,7 @@ func TestPendingItemCompositionProjectsNestedIdentityDiagnostics(t *testing.T) {
}}}
traversal := importTraversal{accounting: &importAccounting{}, limits: defaultImportLimits()}
diagnostics := traversal.composePendingItems(&outer, sequencePolicy{})
diagnostics := traversal.composePendingItems(&outer)
if len(diagnostics) != 1 {
t.Fatalf("diagnostics = %#v, want one conflict", diagnostics)
}
@@ -105,7 +105,7 @@ func TestPendingItemCompositionProjectsNestedIdentityDiagnostics(t *testing.T) {
}
}
func TestPendingItemCompositionAppliesApplicationIdentityConstraints(t *testing.T) {
func TestPendingItemCompositionAppliesOuterApplicationIdentityConstraints(t *testing.T) {
t.Parallel()
itemScope := acquisitionScope{contributions: []acquiredContribution{{
@@ -116,15 +116,15 @@ func TestPendingItemCompositionAppliesApplicationIdentityConstraints(t *testing.
destination: Keys("items"), pendingItem: &itemScope,
}}}
policy, diagnostics := compileSequenceIdentityPolicy([]sequenceIdentityRegistration{{
selector: sequenceIdentitySelector{literalSequenceSelector("prompts")}, identityFields: []string{"id"},
selector: sequenceIdentitySelector{literalSequenceSelector("items")}, identityFields: []string{"id"},
}})
if len(diagnostics) != 0 {
t.Fatalf("compile application identity: %#v", diagnostics)
}
traversal := importTraversal{accounting: &importAccounting{}, limits: defaultImportLimits()}
diagnostics = traversal.composePendingItems(&outer, policy)
if len(diagnostics) != 1 || diagnostics[0].Code != CodeComposeInvalid || diagnostics[0].Path.String() != "/items/0/prompts/0/id" {
_, diagnostics = composeAcquiredScopeWithPolicy(&outer, collectionPolicyScope{}, policy,
newImportInclusionGraph(), nil, nil, nil, &importAccounting{})
if len(diagnostics) != 1 || diagnostics[0].Code != CodeComposeInvalid || diagnostics[0].Path.String() != "/items/0/id" {
t.Fatalf("application identity diagnostics = %#v", diagnostics)
}
}