// Copyright (c) 2022 Alibaba Group Holding Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package tpath import ( "errors" "testing" ) func TestAddSpecRoot(t *testing.T) { tests := []struct { desc string in string expect string err error }{ { desc: "empty", in: ``, expect: `spec: {} `, err: nil, }, { desc: "add-root", in: ` a: va b: foo`, expect: `spec: a: va b: foo `, err: nil, }, { desc: "err", in: `i can't be yaml, can I?`, expect: ``, err: errors.New(""), }, } for _, tt := range tests { t.Run(tt.desc, func(t *testing.T) { if got, err := AddSpecRoot(tt.in); got != tt.expect || ((err != nil && tt.err == nil) || (err == nil && tt.err != nil)) { t.Errorf("%s AddSpecRoot(%s) => %s, want %s", tt.desc, tt.in, got, tt.expect) } }) } } func TestGetConfigSubtree(t *testing.T) { tests := []struct { desc string manifest string path string expect string err bool }{ { desc: "empty", manifest: ``, path: ``, expect: `{} `, err: false, }, { desc: "subtree", manifest: ` a: b: - name: n1 value: v2 - list: - v1 - v2 - v3_regex name: n2 `, path: `a`, expect: `b: - name: n1 value: v2 - list: - v1 - v2 - v3_regex name: n2 `, err: false, }, { desc: "err", manifest: "not-yaml", path: "not-subnode", expect: ``, err: true, }, } for _, tt := range tests { t.Run(tt.desc, func(t *testing.T) { if got, err := GetConfigSubtree(tt.manifest, tt.path); got != tt.expect || (err == nil) == tt.err { t.Errorf("%s GetConfigSubtree(%s, %s) => %s, want %s", tt.desc, tt.manifest, tt.path, got, tt.expect) } }) } }