hugo/hugolib/hugo_sites_multihost_test.go
Bjørn Erik Pedersen 60dfb9a6e0 Add support for multiple staticDirs
This commit adds support for multiple statDirs both on the global and language level.

A simple `config.toml` example:

```bash
staticDir = ["static1", "static2"]
[languages]
[languages.no]
staticDir = ["staticDir_override", "static_no"]
baseURL = "https://example.no"
languageName = "Norsk"
weight = 1
title = "På norsk"

[languages.en]
staticDir2 = "static_en"
baseURL = "https://example.com"
languageName = "English"
weight = 2
title = "In English"
```

In the above, with no theme used:

the English site will get its static files as a union of "static1", "static2" and "static_en". On file duplicates, the right-most version will win.
the Norwegian site will get its static files as a union of "staticDir_override" and "static_no".

This commit also concludes the Multihost support in #4027.

Fixes #36
Closes #4027
2017-11-17 11:01:46 +01:00

78 lines
2.1 KiB
Go

package hugolib
import (
"testing"
"github.com/spf13/afero"
"github.com/stretchr/testify/require"
)
func TestMultihosts(t *testing.T) {
t.Parallel()
var multiSiteTOMLConfigTemplate = `
paginate = 1
disablePathToLower = true
defaultContentLanguage = "{{ .DefaultContentLanguage }}"
defaultContentLanguageInSubdir = {{ .DefaultContentLanguageInSubdir }}
[permalinks]
other = "/somewhere/else/:filename"
[Taxonomies]
tag = "tags"
[Languages]
[Languages.en]
baseURL = "https://example.com"
weight = 10
title = "In English"
languageName = "English"
[Languages.fr]
baseURL = "https://example.fr"
weight = 20
title = "Le Français"
languageName = "Français"
[Languages.nn]
baseURL = "https://example.no"
weight = 30
title = "På nynorsk"
languageName = "Nynorsk"
`
siteConfig := testSiteConfig{Fs: afero.NewMemMapFs(), DefaultContentLanguage: "fr", DefaultContentLanguageInSubdir: false}
sites := createMultiTestSites(t, siteConfig, multiSiteTOMLConfigTemplate)
fs := sites.Fs
cfg := BuildCfg{Watching: true}
th := testHelper{sites.Cfg, fs, t}
assert := require.New(t)
err := sites.Build(cfg)
assert.NoError(err)
th.assertFileContent("public/en/sect/doc1-slug/index.html", "Hello")
s1 := sites.Sites[0]
s1h := s1.getPage(KindHome)
assert.True(s1h.IsTranslated())
assert.Len(s1h.Translations(), 2)
assert.Equal("https://example.com/", s1h.Permalink())
s2 := sites.Sites[1]
s2h := s2.getPage(KindHome)
assert.Equal("https://example.fr/", s2h.Permalink())
th.assertFileContentStraight("public/fr/index.html", "French Home Page")
th.assertFileContentStraight("public/en/index.html", "Default Home Page")
// Check paginators
th.assertFileContent("public/en/page/1/index.html", `refresh" content="0; url=https://example.com/"`)
th.assertFileContent("public/nn/page/1/index.html", `refresh" content="0; url=https://example.no/"`)
th.assertFileContent("public/en/sect/page/2/index.html", "List Page 2", "Hello", "https://example.com/sect/", "\"/sect/page/3/")
th.assertFileContent("public/fr/sect/page/2/index.html", "List Page 2", "Bonjour", "https://example.fr/sect/")
}