diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-02-17 18:40:08 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-02-18 08:37:11 +0100 |
commit | 4493e8ed9f3c4dadc66689e0451bc3611e07fa6f (patch) | |
tree | bbea33d41230b421cdaf4d0e3c2455bd911abaf9 /hugolib/taxonomy_test.go | |
parent | 07ab7ae3d2e64dafb8f6dab937986d8e366d1fe5 (diff) |
hugolib: Fix issue with taxonomies when only some have content page
Fixes #2992
Diffstat (limited to 'hugolib/taxonomy_test.go')
-rw-r--r-- | hugolib/taxonomy_test.go | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/hugolib/taxonomy_test.go b/hugolib/taxonomy_test.go index f5abe2af0..9ef23279d 100644 --- a/hugolib/taxonomy_test.go +++ b/hugolib/taxonomy_test.go @@ -14,11 +14,16 @@ package hugolib import ( + "fmt" "path/filepath" "reflect" "testing" + "github.com/spf13/afero" + "github.com/stretchr/testify/require" + "github.com/spf13/hugo/deps" + "github.com/spf13/hugo/hugofs" ) func TestByCountOrderOfTaxonomies(t *testing.T) { @@ -45,3 +50,80 @@ func TestByCountOrderOfTaxonomies(t *testing.T) { t.Fatalf("ordered taxonomies do not match [a, b, c]. Got: %s", st) } } + +// Issue #2992 +func TestTaxonomiesWithAndWithoutContentFile(t *testing.T) { + t.Parallel() + + siteConfig := ` +baseURL = "http://example.com/blog" + +paginate = 1 +defaultContentLanguage = "en" + +[Taxonomies] +tag = "tags" +category = "categories" +other = "others" +` + + pageTemplate := `--- +title: "%s" +tags: +%s +categories: +%s +others: +%s +--- +# Doc +` + + mf := afero.NewMemMapFs() + + writeToFs(t, mf, "config.toml", siteConfig) + + cfg, err := LoadConfig(mf, "", "config.toml") + require.NoError(t, err) + + fs := hugofs.NewFrom(mf, cfg) + th := testHelper{cfg, fs, t} + + writeSource(t, fs, "layouts/_default/single.html", "Single|{{ .Title }}|{{ .Content }}") + writeSource(t, fs, "layouts/_default/list.html", "List|{{ .Title }}|{{ .Content }}") + writeSource(t, fs, "layouts/_default/terms.html", "Terms List|{{ .Title }}|{{ .Content }}") + + writeSource(t, fs, "content/p1.md", fmt.Sprintf(pageTemplate, "t1/c1", "- tag1", "- cat1", "- o1")) + writeSource(t, fs, "content/p2.md", fmt.Sprintf(pageTemplate, "t2/c1", "- tag2", "- cat1", "- o1")) + + writeNewContentFile(t, fs, "Category Terms", "2017-01-01", "content/categories/_index.md", 10) + writeNewContentFile(t, fs, "Tag1 List", "2017-01-01", "content/tags/tag1/_index.md", 10) + + h, err := NewHugoSites(deps.DepsCfg{Fs: fs, Cfg: cfg}) + + require.NoError(t, err) + require.Len(t, h.Sites, 1) + + err = h.Build(BuildCfg{}) + + require.NoError(t, err) + + // So what we have now is: + // 1. categories with terms content page, but no content page for the only c1 category + // 2. tags with no terms content page, but content page for one of 2 tags (tag1) + // 3. the "others" taxonomy with no content pages. + + // 1. + th.assertFileContent("public/categories/cat1/index.html", "List", "Cat1") + th.assertFileContent("public/categories/index.html", "Terms List", "Category Terms") + + // 2. + th.assertFileContent("public/tags/tag2/index.html", "List", "Tag2") + th.assertFileContent("public/tags/tag1/index.html", "List", "Tag1") + th.assertFileContent("public/tags/index.html", "Terms List", "Tags") + + // 3. + th.assertFileContent("public/others/o1/index.html", "List", "O1") + th.assertFileContent("public/others/index.html", "Terms List", "Others") + +} |