Allow configuration names in application paths

This commit is contained in:
2026-11-02 00:35:37 +00:00
parent 5b03ca6278
commit 1fd0adc571
8 changed files with 73 additions and 35 deletions

View File

@@ -226,6 +226,21 @@ func TestCompileSequenceIdentityPolicyAllowsDisjointSelectorsAndRoot(t *testing.
}
}
func TestSequenceIdentitySelectorsAllowConfigKeys(t *testing.T) {
policy, diagnostics := compileSequenceIdentityPolicy([]sequenceIdentityRegistration{
{selector: sequenceIdentitySelector{literalSequenceSelector("config"), literalSequenceSelector("items")}, identityFields: []string{"id"}},
{selector: sequenceIdentitySelector{literalSequenceSelector("configkit"), anyMappingSequenceSelector(), literalSequenceSelector("items")}, identityFields: []string{"name"}},
})
if len(diagnostics) != 0 {
t.Fatalf("diagnostics = %#v", diagnostics)
}
for _, path := range []Path{Keys("config", "items"), Keys("configkit", "config", "items")} {
if _, matched := policy.identityFieldsAt(path); !matched {
t.Errorf("selector failed to match %q", path.String())
}
}
}
func TestCompileSequenceIdentityPolicySnapshotsSelectorAndFields(t *testing.T) {
selector := sequenceIdentitySelector{literalSequenceSelector("items")}
fields := []string{"id", "namespace"}
@@ -242,7 +257,7 @@ func TestCompileSequenceIdentityPolicySnapshotsSelectorAndFields(t *testing.T) {
func TestCompileSequenceIdentityPolicyRejectsInvalidSelectorsAndEmptyFields(t *testing.T) {
_, diagnostics := compileSequenceIdentityPolicy([]sequenceIdentityRegistration{
{selector: sequenceIdentitySelector{literalSequenceSelector("configkit")}, identityFields: []string{"id"}},
{selector: sequenceIdentitySelector{literalSequenceSelector("extends")}, identityFields: []string{"id"}},
{selector: sequenceIdentitySelector{{kind: sequenceSelectorSegmentKind(99)}}, identityFields: []string{"id"}},
{selector: sequenceIdentitySelector{literalSequenceSelector("unused")}, identityFields: nil},
})