Skip to content
Open
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
14 changes: 14 additions & 0 deletions gogen/codegen_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1123,6 +1123,20 @@ func TestSimpleStructs(t *testing.T) {
},
},
wantStructsCodeFile: filepath.Join(TestRoot, "testdata/structs/presence-container-example.formatted-txt"),
}, {
name: "skip obsolete list keys test",
inFiles: []string{filepath.Join(datapath, "skip-obsolete-test.yang")},
inConfig: CodeGenerator{
IROptions: ygen.IROptions{
TransformationOptions: ygen.TransformationOpts{
SkipObsolete: true,
},
},
GoOptions: GoOpts{
GenerateSimpleUnions: true,
},
},
wantErrSubstring: "did not find type for key obsolete-key",
}}

for _, tt := range tests {
Expand Down
5 changes: 4 additions & 1 deletion gogen/unordered_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -546,7 +546,10 @@ func generateGetListKey(buf *bytes.Buffer, s *ygen.ParsedDirectory, nameMap map[
sort.Strings(kn)

for _, k := range kn {
h.Keys = append(h.Keys, nameMap[k])
// Skip keys that don't exist in nameMap (e.g., when skip_obsolete is enabled)
if fieldMap, ok := nameMap[k]; ok {
h.Keys = append(h.Keys, fieldMap)
}
}

return goKeyMapTemplate.Execute(buf, h)
Expand Down
29 changes: 29 additions & 0 deletions testdata/modules/skip-obsolete-test.yang
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
module skip-obsolete-test {
prefix "sot";
namespace "urn:sot";

container top {
list interfaces {
key "name obsolete-key";

leaf name {
type string;
description "Interface name";
}

leaf obsolete-key {
type string;
status obsolete;
description "Obsolete key that should be skipped";
}

leaf admin-status {
type enumeration {
enum up;
enum down;
}
description "Administrative status";
}
}
}
}
Loading