mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
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
This commit is contained in:
parent
a70da2b74a
commit
ae6cf93c84
2 changed files with 43 additions and 16 deletions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
c.Run("Basic", func(c *qt.C) {
|
||||
c.Parallel()
|
||||
// Add a random config variable for testing.
|
||||
// side = page in Norwegian.
|
||||
configContent := `
|
||||
PaginatePath = "side"
|
||||
`
|
||||
|
||||
mm := afero.NewMemMapFs()
|
||||
|
||||
writeToFs(t, mm, "hugo.toml", configContent)
|
||||
|
||||
cfg, _, err := LoadConfig(ConfigSourceDescriptor{Fs: mm, Filename: "hugo.toml"})
|
||||
c.Assert(err, qt.IsNil)
|
||||
|
||||
cfg := loadConfig(c, `PaginatePath = "side"`, false)
|
||||
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) {
|
||||
|
|
Loading…
Reference in a new issue