From 3c0c50409366ea338961bba4548528710cd50ee0 Mon Sep 17 00:00:00 2001 From: Mathieu Frenette Date: Wed, 19 May 2021 08:51:06 -0400 Subject: [PATCH] Fix all tests --- src/internal/context_test.go | 4 ++-- src/internal/contexts.go | 26 +++++++++++--------------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/internal/context_test.go b/src/internal/context_test.go index a66358b..09249b4 100644 --- a/src/internal/context_test.go +++ b/src/internal/context_test.go @@ -16,11 +16,11 @@ func loadContext(file string) Context { if !helpers.PathExists(path) { panic(fmt.Errorf("context file not found: %q", path)) } - context, err := Load(path) + contexts, err := readAndParseContextFile(path) if err != nil { panic(fmt.Errorf("loading context from %q: %w", path, err)) } - return context.Context + return contexts.Context } func assertNotSameMapStringString(t *testing.T, map1, map2 map[string]string, msgAndArgs ...interface{}) { diff --git a/src/internal/contexts.go b/src/internal/contexts.go index c841b84..df4aa10 100644 --- a/src/internal/contexts.go +++ b/src/internal/contexts.go @@ -15,28 +15,24 @@ type Contexts struct { contexts map[string]Context } -// Clone returns a deep-copy of this object -func (c Contexts) Clone() Contexts { - clone := c - for key, value := range c.contexts { - clone.contexts[key] = value.Clone() - } - return clone -} - // Merge creates a deep-copy of this object and copies values from given source object on top of it func (c Contexts) Merge(source Contexts) Contexts { - clone := c.Clone() - clone.Context.Merge(source.Context) + merged := Contexts{ + Context: c.Context.Merge(source.Context), + contexts: make(map[string]Context), + } + for key, value := range c.contexts { + merged.contexts[key] = value.Clone() + } for key, value := range source.contexts { - existing, ok := clone.contexts[key] + existing, ok := merged.contexts[key] if ok { - c.contexts[key] = existing.Merge(value) + merged.contexts[key] = existing.Merge(value) } else { - c.contexts[key] = value + merged.contexts[key] = value } } - return clone + return merged } // GetContextNames returns the list of all context names user can choose from,