shithub: hugo

Download patch

ref: 118b83d74b5caaae6646ec031d59b8ab3491c6b2
parent: adbd5bc47fb48cbf6afa3198aec405500452ee65
author: Bjørn Erik Pedersen <[email protected]>
date: Sun Nov 19 10:44:20 EST 2017

helpers: Properly handle []interface{} as staticDir

And now with a proper integration test ...

--- a/helpers/pathspec.go
+++ b/helpers/pathspec.go
@@ -18,6 +18,7 @@
 
 	"github.com/gohugoio/hugo/config"
 	"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.
@@ -106,7 +107,7 @@
 
 func getStringOrStringSlice(cfg config.Provider, key string, id int) []string {
 
-	if id > 0 {
+	if id >= 0 {
 		key = fmt.Sprintf("%s%d", key, id)
 	}
 
@@ -116,8 +117,8 @@
 
 	if sds, ok := sd.(string); ok {
 		out = []string{sds}
-	} else if sdsl, ok := sd.([]string); ok {
-		out = sdsl
+	} else if sd != nil {
+		out = cast.ToStringSlice(sd)
 	}
 
 	return out
--- a/hugolib/hugo_sites_multihost_test.go
+++ b/hugolib/hugo_sites_multihost_test.go
@@ -15,6 +15,7 @@
 disablePathToLower = true
 defaultContentLanguage = "{{ .DefaultContentLanguage }}"
 defaultContentLanguageInSubdir = {{ .DefaultContentLanguageInSubdir }}
+staticDir = ["s1", "s2"]
 
 [permalinks]
 other = "/somewhere/else/:filename"
@@ -24,6 +25,7 @@
 
 [Languages]
 [Languages.en]
+staticDir2 = ["ens1", "ens2"]
 baseURL = "https://example.com"
 weight = 10
 title = "In English"
@@ -30,6 +32,7 @@
 languageName = "English"
 
 [Languages.fr]
+staticDir2 = ["frs1", "frs2"]
 baseURL = "https://example.fr"
 weight = 20
 title = "Le Français"
@@ -36,6 +39,7 @@
 languageName = "Français"
 
 [Languages.nn]
+staticDir2 = ["nns1", "nns2"]
 baseURL = "https://example.no"
 weight = 30
 title = "På nynorsk"
@@ -57,6 +61,8 @@
 
 	s1 := sites.Sites[0]
 
+	assert.Equal([]string{"s1", "s2", "ens1", "ens2"}, s1.StaticDirs())
+
 	s1h := s1.getPage(KindHome)
 	assert.True(s1h.IsTranslated())
 	assert.Len(s1h.Translations(), 2)
@@ -63,6 +69,8 @@
 	assert.Equal("https://example.com/", s1h.Permalink())
 
 	s2 := sites.Sites[1]
+	assert.Equal([]string{"s1", "s2", "frs1", "frs2"}, s2.StaticDirs())
+
 	s2h := s2.getPage(KindHome)
 	assert.Equal("https://example.fr/", s2h.Permalink())