hugolib: Allow untyped nil to be merged in lang.Merge
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 21 Jul 2018 09:41:23 +0000 (11:41 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 21 Jul 2018 09:41:23 +0000 (11:41 +0200)
Fixes #4977

hugolib/pages_language_merge.go
hugolib/pages_language_merge_test.go

index 6e467c7a03ec930bc380c59496ee71508d6d73de..ef87ac9cbf860436450ff7c02219466f60167e9f 100644 (file)
@@ -53,6 +53,9 @@ func (p1 Pages) MergeByLanguage(p2 Pages) Pages {
 // MergeByLanguageInterface is the generic version of MergeByLanguage. It
 // is here just so it can be called from the tpl package.
 func (p1 Pages) MergeByLanguageInterface(in interface{}) (interface{}, error) {
+       if in == nil {
+               return p1, nil
+       }
        p2, ok := in.(Pages)
        if !ok {
                return nil, fmt.Errorf("%T cannot be merged by language", in)
index b7c78836c897c9b4079a0089256e08a98bb162a8..8a4688f166e36fb09ec649d53e7bd3114804b90b 100644 (file)
@@ -79,6 +79,11 @@ func TestMergeLanguages(t *testing.T) {
        // This looks less ugly in the templates ...
        mergedNNResources := ri.(resource.ResourcesLanguageMerger).MergeByLanguage(enBundle.Resources)
        assert.Equal(6, len(mergedNNResources))
+
+       unchanged, err := nnSite.RegularPages.MergeByLanguageInterface(nil)
+       assert.NoError(err)
+       assert.Equal(nnSite.RegularPages, unchanged)
+
 }
 
 func TestMergeLanguagesTemplate(t *testing.T) {