helpers: Properly handle []interface{} as staticDir

And now with a proper integration test ...
This commit is contained in:
Bjørn Erik Pedersen 2017-11-19 15:44:20 +01:00
parent adbd5bc47f
commit 118b83d74b
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
2 changed files with 12 additions and 3 deletions

View file

@ -18,6 +18,7 @@ import (
"github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config"
"github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugofs"
"github.com/spf13/cast"
) )
// PathSpec holds methods that decides how paths in URLs and files in Hugo should look like. // PathSpec holds methods that decides how paths in URLs and files in Hugo should look like.
@ -106,7 +107,7 @@ func NewPathSpec(fs *hugofs.Fs, cfg config.Provider) (*PathSpec, error) {
func getStringOrStringSlice(cfg config.Provider, key string, id int) []string { func getStringOrStringSlice(cfg config.Provider, key string, id int) []string {
if id > 0 { if id >= 0 {
key = fmt.Sprintf("%s%d", key, id) key = fmt.Sprintf("%s%d", key, id)
} }
@ -116,8 +117,8 @@ func getStringOrStringSlice(cfg config.Provider, key string, id int) []string {
if sds, ok := sd.(string); ok { if sds, ok := sd.(string); ok {
out = []string{sds} out = []string{sds}
} else if sdsl, ok := sd.([]string); ok { } else if sd != nil {
out = sdsl out = cast.ToStringSlice(sd)
} }
return out return out

View file

@ -15,6 +15,7 @@ paginate = 1
disablePathToLower = true disablePathToLower = true
defaultContentLanguage = "{{ .DefaultContentLanguage }}" defaultContentLanguage = "{{ .DefaultContentLanguage }}"
defaultContentLanguageInSubdir = {{ .DefaultContentLanguageInSubdir }} defaultContentLanguageInSubdir = {{ .DefaultContentLanguageInSubdir }}
staticDir = ["s1", "s2"]
[permalinks] [permalinks]
other = "/somewhere/else/:filename" other = "/somewhere/else/:filename"
@ -24,18 +25,21 @@ tag = "tags"
[Languages] [Languages]
[Languages.en] [Languages.en]
staticDir2 = ["ens1", "ens2"]
baseURL = "https://example.com" baseURL = "https://example.com"
weight = 10 weight = 10
title = "In English" title = "In English"
languageName = "English" languageName = "English"
[Languages.fr] [Languages.fr]
staticDir2 = ["frs1", "frs2"]
baseURL = "https://example.fr" baseURL = "https://example.fr"
weight = 20 weight = 20
title = "Le Français" title = "Le Français"
languageName = "Français" languageName = "Français"
[Languages.nn] [Languages.nn]
staticDir2 = ["nns1", "nns2"]
baseURL = "https://example.no" baseURL = "https://example.no"
weight = 30 weight = 30
title = "På nynorsk" title = "På nynorsk"
@ -57,12 +61,16 @@ languageName = "Nynorsk"
s1 := sites.Sites[0] s1 := sites.Sites[0]
assert.Equal([]string{"s1", "s2", "ens1", "ens2"}, s1.StaticDirs())
s1h := s1.getPage(KindHome) s1h := s1.getPage(KindHome)
assert.True(s1h.IsTranslated()) assert.True(s1h.IsTranslated())
assert.Len(s1h.Translations(), 2) assert.Len(s1h.Translations(), 2)
assert.Equal("https://example.com/", s1h.Permalink()) assert.Equal("https://example.com/", s1h.Permalink())
s2 := sites.Sites[1] s2 := sites.Sites[1]
assert.Equal([]string{"s1", "s2", "frs1", "frs2"}, s2.StaticDirs())
s2h := s2.getPage(KindHome) s2h := s2.getPage(KindHome)
assert.Equal("https://example.fr/", s2h.Permalink()) assert.Equal("https://example.fr/", s2h.Permalink())