mirror of
https://github.com/gohugoio/hugo.git
synced 2025-01-27 06:01:36 +00:00
Removing GetSection
Using GetXXX is not idiomatic to Go. Also added a bunch of unit testing around this method.
This commit is contained in:
parent
ae7112977d
commit
599e6672f7
4 changed files with 78 additions and 19 deletions
|
@ -37,7 +37,3 @@ type UrlPath struct {
|
||||||
Section string
|
Section string
|
||||||
Path string
|
Path string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Node) GetSection() string {
|
|
||||||
return n.Section
|
|
||||||
}
|
|
||||||
|
|
|
@ -118,7 +118,7 @@ func (page *Page) Type() string {
|
||||||
return page.contentType
|
return page.contentType
|
||||||
}
|
}
|
||||||
page.guessSection()
|
page.guessSection()
|
||||||
if x := page.GetSection(); x != "" {
|
if x := page.Section; x != "" {
|
||||||
return x
|
return x
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ package hugolib
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"html/template"
|
"html/template"
|
||||||
"io"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
@ -69,6 +69,28 @@ var SIMPLE_PAGE_JSON_COMPACT = `
|
||||||
Text
|
Text
|
||||||
`
|
`
|
||||||
|
|
||||||
|
var SIMPLE_PAGE_NOLAYOUT = `---
|
||||||
|
title: simple_no_layout
|
||||||
|
---
|
||||||
|
No Layout called out`
|
||||||
|
|
||||||
|
var SIMPLE_PAGE_LAYOUT_FOOBAR = `---
|
||||||
|
title: simple layout foobar
|
||||||
|
layout: foobar
|
||||||
|
---
|
||||||
|
Layout foobar`
|
||||||
|
|
||||||
|
var SIMPLE_PAGE_TYPE_FOOBAR = `---
|
||||||
|
type: foobar
|
||||||
|
---
|
||||||
|
type foobar`
|
||||||
|
|
||||||
|
var SIMPLE_PAGE_TYPE_LAYOUT = `---
|
||||||
|
type: barfoo
|
||||||
|
layout: buzfoo
|
||||||
|
---
|
||||||
|
type and layout set`
|
||||||
|
|
||||||
func checkError(t *testing.T, err error, expected string) {
|
func checkError(t *testing.T, err error, expected string) {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("err is nil")
|
t.Fatalf("err is nil")
|
||||||
|
@ -133,16 +155,15 @@ func TestCreateNewPage(t *testing.T) {
|
||||||
|
|
||||||
func TestCreatePage(t *testing.T) {
|
func TestCreatePage(t *testing.T) {
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
r io.Reader
|
r string
|
||||||
}{
|
}{
|
||||||
{strings.NewReader(SIMPLE_PAGE_JSON)},
|
{SIMPLE_PAGE_JSON},
|
||||||
{strings.NewReader(SIMPLE_PAGE_JSON_MULTIPLE)},
|
{SIMPLE_PAGE_JSON_MULTIPLE},
|
||||||
//{strings.NewReader(SIMPLE_PAGE_JSON_COMPACT)},
|
//{strings.NewReader(SIMPLE_PAGE_JSON_COMPACT)},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
_, err := ReadFrom(test.r, "page")
|
if _, err := ReadFrom(strings.NewReader(test.r), "page"); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Unable to parse page: %s", err)
|
t.Errorf("Unable to parse page: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -150,15 +171,15 @@ func TestCreatePage(t *testing.T) {
|
||||||
|
|
||||||
func TestDegenerateInvalidFrontMatterShortDelim(t *testing.T) {
|
func TestDegenerateInvalidFrontMatterShortDelim(t *testing.T) {
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
r io.Reader
|
r string
|
||||||
err string
|
err string
|
||||||
}{
|
}{
|
||||||
{strings.NewReader(INVALID_FRONT_MATTER_SHORT_DELIM), "unable to match beginning front matter delimiter"},
|
{INVALID_FRONT_MATTER_SHORT_DELIM, "unable to match beginning front matter delimiter"},
|
||||||
{strings.NewReader(INVALID_FRONT_MATTER_SHORT_DELIM_ENDING), "unable to match ending front matter delimiter"},
|
{INVALID_FRONT_MATTER_SHORT_DELIM_ENDING, "unable to match ending front matter delimiter"},
|
||||||
{strings.NewReader(INVALID_FRONT_MATTER_MISSING), "unable to detect front matter"},
|
{INVALID_FRONT_MATTER_MISSING, "unable to detect front matter"},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
_, err := ReadFrom(test.r, "invalid/front/matter/short/delim")
|
_, err := ReadFrom(strings.NewReader(test.r), "invalid/front/matter/short/delim")
|
||||||
checkError(t, err, test.err)
|
checkError(t, err, test.err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,3 +190,47 @@ func TestDegenerateInvalidFrontMatterLeadingWhitespace(t *testing.T) {
|
||||||
t.Fatalf("Unable to parse front matter given leading whitespace: %s", err)
|
t.Fatalf("Unable to parse front matter given leading whitespace: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLayoutOverride(t *testing.T) {
|
||||||
|
var (
|
||||||
|
path_content_one_dir = filepath.Join("content", "gub", "file1.md")
|
||||||
|
path_content_two_dir = filepath.Join("content", "dub", "sub", "file1.md")
|
||||||
|
path_content_no_dir = filepath.Join("content", "file1")
|
||||||
|
path_one_directory = filepath.Join("fub", "file1.md")
|
||||||
|
path_no_directory = filepath.Join("file1.md")
|
||||||
|
)
|
||||||
|
tests := []struct {
|
||||||
|
content string
|
||||||
|
path string
|
||||||
|
expectedLayout string
|
||||||
|
}{
|
||||||
|
{SIMPLE_PAGE_NOLAYOUT, path_content_two_dir, "sub/single.html"},
|
||||||
|
{SIMPLE_PAGE_NOLAYOUT, path_content_one_dir, "gub/single.html"},
|
||||||
|
{SIMPLE_PAGE_NOLAYOUT, path_content_no_dir, "page/single.html"},
|
||||||
|
{SIMPLE_PAGE_NOLAYOUT, path_one_directory, "fub/single.html"},
|
||||||
|
{SIMPLE_PAGE_NOLAYOUT, path_no_directory, "page/single.html"},
|
||||||
|
{SIMPLE_PAGE_LAYOUT_FOOBAR, path_content_two_dir, "foobar"},
|
||||||
|
{SIMPLE_PAGE_LAYOUT_FOOBAR, path_content_one_dir, "foobar"},
|
||||||
|
{SIMPLE_PAGE_LAYOUT_FOOBAR, path_one_directory, "foobar"},
|
||||||
|
{SIMPLE_PAGE_LAYOUT_FOOBAR, path_no_directory, "foobar"},
|
||||||
|
{SIMPLE_PAGE_TYPE_FOOBAR, path_content_two_dir, "foobar/single.html"},
|
||||||
|
{SIMPLE_PAGE_TYPE_FOOBAR, path_content_one_dir, "foobar/single.html"},
|
||||||
|
{SIMPLE_PAGE_TYPE_FOOBAR, path_content_no_dir, "foobar/single.html"},
|
||||||
|
{SIMPLE_PAGE_TYPE_FOOBAR, path_one_directory, "foobar/single.html"},
|
||||||
|
{SIMPLE_PAGE_TYPE_FOOBAR, path_no_directory, "foobar/single.html"},
|
||||||
|
{SIMPLE_PAGE_TYPE_LAYOUT, path_content_two_dir, "buzfoo"},
|
||||||
|
{SIMPLE_PAGE_TYPE_LAYOUT, path_content_one_dir, "buzfoo"},
|
||||||
|
{SIMPLE_PAGE_TYPE_LAYOUT, path_content_no_dir, "buzfoo"},
|
||||||
|
{SIMPLE_PAGE_TYPE_LAYOUT, path_one_directory, "buzfoo"},
|
||||||
|
{SIMPLE_PAGE_TYPE_LAYOUT, path_no_directory, "buzfoo"},
|
||||||
|
}
|
||||||
|
for _, test := range tests {
|
||||||
|
p, err := ReadFrom(strings.NewReader(test.content), test.path)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unable to parse content:\n%s\n", test.content)
|
||||||
|
}
|
||||||
|
if p.Layout() != test.expectedLayout {
|
||||||
|
t.Errorf("Layout mismatch. Expected: %s, got: %s", test.expectedLayout, p.Layout())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
//"sync"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var DefaultTimer = nitro.Initalize()
|
var DefaultTimer = nitro.Initalize()
|
||||||
|
@ -381,8 +380,7 @@ func (s *Site) BuildSiteMeta() (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, p := range s.Pages {
|
for i, p := range s.Pages {
|
||||||
sect := p.GetSection()
|
s.Sections.Add(p.Section, s.Pages[i])
|
||||||
s.Sections.Add(sect, s.Pages[i])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for k, _ := range s.Sections {
|
for k, _ := range s.Sections {
|
||||||
|
|
Loading…
Reference in a new issue