Skip to content

Commit

Permalink
Fix default values when loading from config dir
Browse files Browse the repository at this point in the history
By waiting until we've loaded the config dir config before applying the default values.

Fixes #8763
  • Loading branch information
bep committed Jul 15, 2021
1 parent a70da2b commit ae6cf93
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 17 deletions.
8 changes: 4 additions & 4 deletions hugolib/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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
Expand Down
53 changes: 40 additions & 13 deletions hugolib/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import (
"strings"
"testing"

"github.com/gohugoio/hugo/config"

"github.com/gohugoio/hugo/media"
"github.com/google/go-cmp/cmp"

Expand All @@ -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) {
Expand Down

0 comments on commit ae6cf93

Please sign in to comment.