From 0147c3e13e741f1d2bac7f082e509222fb86ab38 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Tue, 14 Feb 2017 19:00:06 +0100 Subject: feat ctx: Let sub-resource-sets inherit vars from parent Users of kontemplate may expect variables defined on the parent resource to be inherited by children. This implements that functionality. Values defined twice are overwritten by the child's definition. Fixes #20 --- context/context_test.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'context/context_test.go') diff --git a/context/context_test.go b/context/context_test.go index b34222ed4650..66b857ffe822 100644 --- a/context/context_test.go +++ b/context/context_test.go @@ -81,3 +81,62 @@ func TestLoadContextWithResourceSetCollections(t *testing.T) { } } + +func TestSubresourceVariableInheritance(t *testing.T) { + ctx, err := LoadContextFromFile("testdata/parent-variables.yaml") + + if err != nil { + t.Error(err) + t.Fail() + } + + expected := Context{ + Name: "k8s.prod.mydomain.com", + ResourceSets: []ResourceSet{ + { + Name: "parent/child", + Values: map[string]interface{}{ + "foo": "bar", + "bar": "baz", + }, + Include: nil, + Parent: "parent", + }, + }, + BaseDir: "testdata", + } + + if !reflect.DeepEqual(*ctx, expected) { + t.Error("Loaded and expected context did not match") + t.Fail() + } +} + +func TestSubresourceVariableInheritanceOverride(t *testing.T) { + ctx, err := LoadContextFromFile("testdata/parent-variable-override.yaml") + + if err != nil { + t.Error(err) + t.Fail() + } + + expected := Context{ + Name: "k8s.prod.mydomain.com", + ResourceSets: []ResourceSet{ + { + Name: "parent/child", + Values: map[string]interface{}{ + "foo": "newvalue", + }, + Include: nil, + Parent: "parent", + }, + }, + BaseDir: "testdata", + } + + if !reflect.DeepEqual(*ctx, expected) { + t.Error("Loaded and expected context did not match") + t.Fail() + } +} -- cgit 1.4.1