Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-07-15 16:31:50 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-07-15 17:15:32 +0300
commitae6cf93c84c3584b111f4b9fa3fb4e3f63d37915 (patch)
tree3dc0411801105a70d20ab426cbf7df62b9979815 /hugolib
parenta70da2b74a6af0834cce9668cdb6acdb1c86a4c0 (diff)
Fix default values when loading from config dir
By waiting until we've loaded the config dir config before applying the default values. Fixes #8763
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/config.go8
-rw-r--r--hugolib/config_test.go53
2 files changed, 44 insertions, 17 deletions
diff --git a/hugolib/config.go b/hugolib/config.go
index 65b269ab6..694f34615 100644
--- a/hugolib/config.go
+++ b/hugolib/config.go
@@ -78,10 +78,6 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
}
}
- if err := l.applyConfigDefaults(); err != nil {
- return l.cfg, configFiles, err
- }
-
if d.AbsConfigDir != "" {
dcfg, dirnames, err := config.LoadConfigFromDir(l.Fs, d.AbsConfigDir, l.Environment)
if err == nil {
@@ -97,6 +93,10 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
}
}
+ if err := l.applyConfigDefaults(); err != nil {
+ return l.cfg, configFiles, err
+ }
+
l.cfg.SetDefaultMergeStrategy()
// We create languages based on the settings, so we need to make sure that
diff --git a/hugolib/config_test.go b/hugolib/config_test.go
index 6de274717..575931975 100644
--- a/hugolib/config_test.go
+++ b/hugolib/config_test.go
@@ -20,6 +20,8 @@ import (
"strings"
"testing"
+ "github.com/gohugoio/hugo/config"
+
"github.com/gohugoio/hugo/media"
"github.com/google/go-cmp/cmp"
@@ -29,24 +31,49 @@ import (
)
func TestLoadConfig(t *testing.T) {
- t.Parallel()
c := qt.New(t)
- // Add a random config variable for testing.
- // side = page in Norwegian.
- configContent := `
- PaginatePath = "side"
- `
-
- mm := afero.NewMemMapFs()
-
- writeToFs(t, mm, "hugo.toml", configContent)
+ loadConfig := func(c *qt.C, configContent string, fromDir bool) config.Provider {
+ mm := afero.NewMemMapFs()
+ filename := "config.toml"
+ descriptor := ConfigSourceDescriptor{Fs: mm}
+ if fromDir {
+ filename = filepath.Join("config", "_default", filename)
+ descriptor.AbsConfigDir = "config"
+ }
+ writeToFs(t, mm, filename, configContent)
+ cfg, _, err := LoadConfig(descriptor)
+ c.Assert(err, qt.IsNil)
+ return cfg
+ }
- cfg, _, err := LoadConfig(ConfigSourceDescriptor{Fs: mm, Filename: "hugo.toml"})
- c.Assert(err, qt.IsNil)
+ c.Run("Basic", func(c *qt.C) {
+ c.Parallel()
+ // Add a random config variable for testing.
+ // side = page in Norwegian.
+ cfg := loadConfig(c, `PaginatePath = "side"`, false)
+ c.Assert(cfg.GetString("paginatePath"), qt.Equals, "side")
+ })
- c.Assert(cfg.GetString("paginatePath"), qt.Equals, "side")
+ // Issue #8763
+ for _, fromDir := range []bool{false, true} {
+ testName := "Taxonomy overrides"
+ if fromDir {
+ testName += " from dir"
+ }
+ c.Run(testName, func(c *qt.C) {
+ c.Parallel()
+ cfg := loadConfig(c, `[taxonomies]
+appellation = "appellations"
+vigneron = "vignerons"`, fromDir)
+
+ c.Assert(cfg.Get("taxonomies"), qt.DeepEquals, maps.Params{
+ "appellation": "appellations",
+ "vigneron": "vignerons",
+ })
+ })
+ }
}
func TestLoadMultiConfig(t *testing.T) {