Borrow lower collection policies during strict composition
This commit is contained in:
@@ -129,7 +129,7 @@ func TestPendingItemCompositionAppliesOuterApplicationIdentityConstraints(t *tes
|
||||
}
|
||||
}
|
||||
|
||||
func TestReplacingOuterCollectionRetiresDiscardedItemIdentity(t *testing.T) {
|
||||
func TestStrictCompositionDoesNotCopyDiscardedItemPolicy(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
outerPath := Keys("items")
|
||||
@@ -148,9 +148,27 @@ func TestReplacingOuterCollectionRetiresDiscardedItemIdentity(t *testing.T) {
|
||||
if len(diagnostics) != 0 {
|
||||
t.Fatalf("compose replacement: %#v", diagnostics)
|
||||
}
|
||||
policy, ok := composed.collectionPolicies.at(nestedPath)
|
||||
if !ok || policy.identityPresent || len(policy.recordOrder) != 0 {
|
||||
t.Fatalf("discarded nested owner policy = %#v, %v", policy, ok)
|
||||
if _, ok := composed.collectionPolicies.at(nestedPath); ok {
|
||||
t.Fatal("strict composition copied an unclaimed nested policy into its sparse result")
|
||||
}
|
||||
policy, ok := lower.at(nestedPath)
|
||||
if !ok || !policy.identityPresent || len(policy.recordOrder) != 0 {
|
||||
t.Fatalf("borrowed lower nested policy changed during composition: %#v, %v", policy, ok)
|
||||
}
|
||||
|
||||
assembly := newAssemblyAccumulator(&composedDocument{
|
||||
root: parseItemPolicyDocument(t, "lower", "items:\n - prompts:\n - id: old\n"),
|
||||
collectionPolicies: lower,
|
||||
origins: make(map[string]Origin),
|
||||
})
|
||||
if _, diagnostics := assembly.applyOverlayWithCollectionProjection(
|
||||
input, nil, composed.collectionPolicies, nil, LayerOverlay, sequencePolicy{}, declarations,
|
||||
); len(diagnostics) != 0 {
|
||||
t.Fatalf("apply replacement to complete lower assembly: %#v", diagnostics)
|
||||
}
|
||||
assembledPolicy, ok := assembly.current.collectionPolicies.at(nestedPath)
|
||||
if !ok || assembledPolicy.identityPresent || len(assembledPolicy.recordOrder) != 0 {
|
||||
t.Fatalf("complete assembly retained discarded nested policy: %#v, %v", assembledPolicy, ok)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user