diff options
-rw-r--r-- | helpers/general.go | 3 | ||||
-rw-r--r-- | helpers/path.go | 22 | ||||
-rw-r--r-- | helpers/path_test.go | 20 | ||||
-rw-r--r-- | helpers/url.go | 55 | ||||
-rw-r--r-- | helpers/url_test.go | 16 | ||||
-rw-r--r-- | hugolib/page.go | 24 | ||||
-rw-r--r-- | hugolib/pageGroup_test.go | 3 | ||||
-rw-r--r-- | hugolib/page_permalink_test.go | 3 | ||||
-rw-r--r-- | hugolib/page_test.go | 4 | ||||
-rw-r--r-- | hugolib/path_seperators_windows_test.go | 5 | ||||
-rw-r--r-- | hugolib/site_show_plan_test.go | 53 | ||||
-rw-r--r-- | hugolib/site_test.go | 75 | ||||
-rw-r--r-- | hugolib/site_url_test.go | 7 | ||||
-rw-r--r-- | source/file.go | 8 | ||||
-rw-r--r-- | source/filesystem_windows_test.go | 8 | ||||
-rw-r--r-- | target/alias_test.go | 13 | ||||
-rw-r--r-- | target/page.go | 2 | ||||
-rw-r--r-- | target/page_test.go | 14 | ||||
-rw-r--r-- | tpl/template.go | 5 |
19 files changed, 204 insertions, 136 deletions
diff --git a/helpers/general.go b/helpers/general.go index bfac5beae..cf3c0ac54 100644 --- a/helpers/general.go +++ b/helpers/general.go @@ -20,9 +20,12 @@ import ( "fmt" "io" "net" + "path/filepath" "strings" ) +const FilePathSeparator = string(filepath.Separator) + func FindAvailablePort() (*net.TCPAddr, error) { l, err := net.Listen("tcp", ":0") if err == nil { diff --git a/helpers/path.go b/helpers/path.go index e5f07450d..b65533d8a 100644 --- a/helpers/path.go +++ b/helpers/path.go @@ -16,15 +16,14 @@ package helpers import ( "errors" "fmt" + "github.com/spf13/afero" + "github.com/spf13/viper" "io" "os" "path/filepath" "regexp" "strings" "unicode" - - "github.com/spf13/afero" - "github.com/spf13/viper" ) var sanitizeRegexp = regexp.MustCompile("[^a-zA-Z0-9./_-]") @@ -173,13 +172,18 @@ func FileAndExt(in string) (name string, ext string) { ext = filepath.Ext(in) base := filepath.Base(in) // path.Base strips any trailing slash! + return FileAndExtSep(in, ext, base, FilePathSeparator), ext +} + +func FileAndExtSep(in, ext, base, pathSeparator string) (name string) { + // No file name cases. These are defined as: - // 1. any "in" path that ends in a os.PathSeparator i.e. "/" on linux - // 2. any "base" consisting of just an os.PathSeparator + // 1. any "in" path that ends in a pathSeparator + // 2. any "base" consisting of just an pathSeparator // 3. any "base" consisting of just an empty string // 4. any "base" consisting of just the current directory i.e. "." // 5. any "base" consisting of just the parent directory i.e. ".." - if (strings.LastIndex(in, string(os.PathSeparator)) == len(in)-1) || base == "" || base == "." || base == ".." || base == string(os.PathListSeparator) { + if (strings.LastIndex(in, pathSeparator) == len(in)-1) || base == "" || base == "." || base == ".." || base == pathSeparator { name = "" // there is NO filename } else if ext != "" { // there was an Extension // return the filename minus the extension (and the ".") @@ -190,6 +194,7 @@ func FileAndExt(in string) (name string, ext string) { name = base } return + } func GetRelativePath(path, base string) (final string, err error) { @@ -203,14 +208,13 @@ func GetRelativePath(path, base string) (final string, err error) { if err != nil { return "", err } - name = filepath.ToSlash(name) return name, nil } // Given a source path, determine the section // A section is the part between the root slash and the second slash or before the first slash func GuessSection(in string) string { - parts := strings.Split(in, "/") + parts := strings.Split(in, FilePathSeparator) // This will include an empty entry before and after paths with leading and trailing slashes // eg... /sect/one/ -> ["", "sect", "one", ""] @@ -256,7 +260,7 @@ func PrettifyPath(in string) string { if filepath.Ext(in) == "" { // /section/name/ -> /section/name/index.html if len(in) < 2 { - return "/" + return FilePathSeparator } return filepath.Join(filepath.Clean(in), "index.html") } else { diff --git a/helpers/path_test.go b/helpers/path_test.go index a7cca35bb..603723c27 100644 --- a/helpers/path_test.go +++ b/helpers/path_test.go @@ -4,7 +4,7 @@ import ( "fmt" "io/ioutil" "os" - "path" + "path/filepath" "strconv" "strings" "testing" @@ -119,7 +119,7 @@ func TestReplaceExtension(t *testing.T) { } for i, d := range data { - output := ReplaceExtension(d.input, d.newext) + output := ReplaceExtension(filepath.FromSlash(d.input), d.newext) if d.expected != output { t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, output) } @@ -139,8 +139,8 @@ func TestDirExists(t *testing.T) { {"../", true}, {"./..", true}, {"./../", true}, - {"/tmp", true}, - {"/tmp/", true}, + {os.TempDir(), true}, + {os.TempDir() + FilePathSeparator, true}, {"/", true}, {"/some-really-random-directory-name", false}, {"/some/really/random/directory/name", false}, @@ -149,7 +149,7 @@ func TestDirExists(t *testing.T) { } for i, d := range data { - exists, _ := DirExists(d.input, new(afero.OsFs)) + exists, _ := DirExists(filepath.FromSlash(d.input), new(afero.OsFs)) if d.expected != exists { t.Errorf("Test %d failed. Expected %t got %t", i, d.expected, exists) } @@ -366,8 +366,8 @@ func TestAbsPathify(t *testing.T) { input, expected string } data := []test{ - {os.TempDir(), path.Clean(os.TempDir())}, // TempDir has trailing slash - {"/banana/../dir/", "/dir"}, + {os.TempDir(), filepath.Clean(os.TempDir())}, // TempDir has trailing slash + {filepath.FromSlash("/banana/../dir/"), filepath.FromSlash("/dir")}, } for i, d := range data { @@ -400,7 +400,7 @@ func TestFilename(t *testing.T) { } for i, d := range data { - output := Filename(d.input) + output := Filename(filepath.FromSlash(d.input)) if d.expected != output { t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, output) } @@ -429,7 +429,7 @@ func TestFileAndExt(t *testing.T) { } for i, d := range data { - file, ext := FileAndExt(d.input) + file, ext := FileAndExt(filepath.FromSlash(d.input)) if d.expectedFile != file { t.Errorf("Test %d failed. Expected filename %q got %q.", i, d.expectedFile, file) } @@ -467,7 +467,7 @@ func TestGuessSection(t *testing.T) { } for i, d := range data { - expected := GuessSection(d.input) + expected := GuessSection(filepath.FromSlash(d.input)) if d.expected != expected { t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, expected) } diff --git a/helpers/url.go b/helpers/url.go index dd8d7508b..a2dc0ac69 100644 --- a/helpers/url.go +++ b/helpers/url.go @@ -15,11 +15,10 @@ package helpers import ( "fmt" + "github.com/PuerkitoBio/purell" "net/url" - "path/filepath" + "path" "strings" - - "github.com/PuerkitoBio/purell" ) func SanitizeUrl(in string) string { @@ -68,7 +67,7 @@ func MakePermalink(host, plink string) *url.URL { panic(fmt.Errorf("Can't make permalink from absolute link %q", plink)) } - base.Path = filepath.Join(base.Path, p.Path) + base.Path = path.Join(base.Path, p.Path) // path.Join will strip off the last /, so put it back if it was there. if strings.HasSuffix(p.Path, "/") && !strings.HasSuffix(base.Path, "/") { @@ -84,7 +83,7 @@ func UrlPrep(ugly bool, in string) string { return x } else { x := PrettifyUrl(SanitizeUrl(in)) - if filepath.Ext(x) == ".xml" { + if path.Ext(x) == ".xml" { return x } url, err := purell.NormalizeURLString(x, purell.FlagAddTrailingSlash) @@ -98,10 +97,10 @@ func UrlPrep(ugly bool, in string) string { // Don't Return /index.html portion. func PrettifyUrl(in string) string { - x := PrettifyPath(in) + x := PrettifyUrlPath(in) - if filepath.Base(x) == "index.html" { - return filepath.Dir(x) + if path.Base(x) == "index.html" { + return path.Dir(x) } if in == "" { @@ -111,21 +110,43 @@ func PrettifyUrl(in string) string { return x } +// /section/name.html -> /section/name/index.html +// /section/name/ -> /section/name/index.html +// /section/name/index.html -> /section/name/index.html +func PrettifyUrlPath(in string) string { + if path.Ext(in) == "" { + // /section/name/ -> /section/name/index.html + if len(in) < 2 { + return "/" + } + return path.Join(path.Clean(in), "index.html") + } else { + name, ext := ResourceAndExt(in) + if name == "index" { + // /section/name/index.html -> /section/name/index.html + return path.Clean(in) + } else { + // /section/name.html -> /section/name/index.html + return path.Join(path.Dir(in), name, "index"+ext) + } + } +} + // /section/name/index.html -> /section/name.html // /section/name/ -> /section/name.html // /section/name.html -> /section/name.html func Uglify(in string) string { - if filepath.Ext(in) == "" { + if path.Ext(in) == "" { if len(in) < 2 { return "/" } // /section/name/ -> /section/name.html - return filepath.Clean(in) + ".html" + return path.Clean(in) + ".html" } else { - name, ext := FileAndExt(in) + name, ext := ResourceAndExt(in) if name == "index" { // /section/name/index.html -> /section/name.html - d := filepath.Dir(in) + d := path.Dir(in) if len(d) > 1 { return d + ext } else { @@ -133,7 +154,15 @@ func Uglify(in string) string { } } else { // /section/name.html -> /section/name.html - return filepath.Clean(in) + return path.Clean(in) } } } + +// Same as FileAndExt, but for Urls +func ResourceAndExt(in string) (name string, ext string) { + ext = path.Ext(in) + base := path.Base(in) + + return FileAndExtSep(in, ext, base, "/"), ext +} diff --git a/helpers/url_test.go b/helpers/url_test.go index 4014ee343..1d5c770ea 100644 --- a/helpers/url_test.go +++ b/helpers/url_test.go @@ -69,14 +69,14 @@ func TestUrlPrep(t *testing.T) { } func TestPretty(t *testing.T) { - assert.Equal(t, PrettifyPath("/section/name.html"), "/section/name/index.html") - assert.Equal(t, PrettifyPath("/section/sub/name.html"), "/section/sub/name/index.html") - assert.Equal(t, PrettifyPath("/section/name/"), "/section/name/index.html") - assert.Equal(t, PrettifyPath("/section/name/index.html"), "/section/name/index.html") - assert.Equal(t, PrettifyPath("/index.html"), "/index.html") - assert.Equal(t, PrettifyPath("/name.xml"), "/name/index.xml") - assert.Equal(t, PrettifyPath("/"), "/") - assert.Equal(t, PrettifyPath(""), "/") + assert.Equal(t, PrettifyUrlPath("/section/name.html"), "/section/name/index.html") + assert.Equal(t, PrettifyUrlPath("/section/sub/name.html"), "/section/sub/name/index.html") + assert.Equal(t, PrettifyUrlPath("/section/name/"), "/section/name/index.html") + assert.Equal(t, PrettifyUrlPath("/section/name/index.html"), "/section/name/index.html") + assert.Equal(t, PrettifyUrlPath("/index.html"), "/index.html") + assert.Equal(t, PrettifyUrlPath("/name.xml"), "/name/index.xml") + assert.Equal(t, PrettifyUrlPath("/"), "/") + assert.Equal(t, PrettifyUrlPath(""), "/") assert.Equal(t, PrettifyUrl("/section/name.html"), "/section/name") assert.Equal(t, PrettifyUrl("/section/sub/name.html"), "/section/sub/name") assert.Equal(t, PrettifyUrl("/section/name/"), "/section/name") diff --git a/hugolib/page.go b/hugolib/page.go index add8fdbaa..67a6842c1 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -17,13 +17,6 @@ import ( "bytes" "errors" "fmt" - "html/template" - "io" - "net/url" - "path/filepath" - "strings" - "time" - "github.com/spf13/cast" "github.com/spf13/hugo/helpers" "github.com/spf13/hugo/hugofs" @@ -32,6 +25,13 @@ import ( "github.com/spf13/hugo/tpl" jww "github.com/spf13/jwalterweatherman" "github.com/spf13/viper" + "html/template" + "io" + "net/url" + "path" + "path/filepath" + "strings" + "time" ) type Page struct { @@ -197,7 +197,7 @@ func layouts(types string, layout string) (layouts []string) { // Add type/layout.html for i := range t { search := t[:len(t)-i] - layouts = append(layouts, fmt.Sprintf("%s/%s.html", strings.ToLower(filepath.Join(search...)), layout)) + layouts = append(layouts, fmt.Sprintf("%s/%s.html", strings.ToLower(path.Join(search...)), layout)) } // Add _default/layout.html @@ -250,7 +250,7 @@ func (p *Page) analyzePage() { func (p *Page) permalink() (*url.URL, error) { baseUrl := string(p.Site.BaseUrl) - dir := strings.TrimSpace(p.Source.Dir()) + dir := strings.TrimSpace(filepath.ToSlash(p.Source.Dir())) pSlug := strings.TrimSpace(p.Slug) pUrl := strings.TrimSpace(p.Url) var permalink string @@ -269,10 +269,10 @@ func (p *Page) permalink() (*url.URL, error) { // fmt.Printf("have a section override for %q in section %s → %s\n", p.Title, p.Section, permalink) } else { if len(pSlug) > 0 { - permalink = helpers.UrlPrep(viper.GetBool("UglyUrls"), filepath.Join(dir, p.Slug+"."+p.Extension())) + permalink = helpers.UrlPrep(viper.GetBool("UglyUrls"), path.Join(dir, p.Slug+"."+p.Extension())) } else { _, t := filepath.Split(p.Source.LogicalName()) - permalink = helpers.UrlPrep(viper.GetBool("UglyUrls"), filepath.Join(dir, helpers.ReplaceExtension(strings.TrimSpace(t), p.Extension()))) + permalink = helpers.UrlPrep(viper.GetBool("UglyUrls"), path.Join(dir, helpers.ReplaceExtension(strings.TrimSpace(t), p.Extension()))) } } @@ -674,6 +674,7 @@ func (p *Page) TargetPath() (outfile string) { if strings.HasSuffix(outfile, "/") { outfile = outfile + "index.html" } + outfile = filepath.FromSlash(outfile) return } @@ -685,6 +686,7 @@ func (p *Page) TargetPath() (outfile string) { if strings.HasSuffix(outfile, "/") { outfile += "index.html" } + outfile = filepath.FromSlash(outfile) return } } diff --git a/hugolib/pageGroup_test.go b/hugolib/pageGroup_test.go index ff85fba8e..c8d89fb03 100644 --- a/hugolib/pageGroup_test.go +++ b/hugolib/pageGroup_test.go @@ -2,6 +2,7 @@ package hugolib import ( "errors" + "path/filepath" "reflect" "testing" @@ -26,7 +27,7 @@ var pageGroupTestSources = []pageGroupTestObject{ func preparePageGroupTestPages(t *testing.T) Pages { var pages Pages for _, s := range pageGroupTestSources { - p, err := NewPage(s.path) + p, err := NewPage(filepath.FromSlash(s.path)) if err != nil { t.Fatalf("failed to prepare test page %s", s.path) } diff --git a/hugolib/page_permalink_test.go b/hugolib/page_permalink_test.go index f420b19c6..97b3d24c6 100644 --- a/hugolib/page_permalink_test.go +++ b/hugolib/page_permalink_test.go @@ -2,6 +2,7 @@ package hugolib import ( "html/template" + "path/filepath" "testing" "github.com/spf13/hugo/source" @@ -48,7 +49,7 @@ func TestPermalink(t *testing.T) { BaseUrl: test.base, }, }, - Source: Source{File: *source.NewFile(test.file)}, + Source: Source{File: *source.NewFile(filepath.FromSlash(test.file))}, } if test.slug != "" { diff --git a/hugolib/page_test.go b/hugolib/page_test.go index 178c72d0e..f6ff83aaa 100644 --- a/hugolib/page_test.go +++ b/hugolib/page_test.go @@ -510,10 +510,10 @@ func TestDegenerateInvalidFrontMatterLeadingWhitespace(t *testing.T) { } func TestSectionEvaluation(t *testing.T) { - page, _ := NewPage("blue/file1.md") + page, _ := NewPage(filepath.FromSlash("blue/file1.md")) page.ReadFrom(strings.NewReader(SIMPLE_PAGE)) if page.Section() != "blue" { - t.Errorf("Section should be %s, got: %s", "blue", page.Section) + t.Errorf("Section should be %s, got: %s", "blue", page.Section()) } } diff --git a/hugolib/path_seperators_windows_test.go b/hugolib/path_seperators_windows_test.go index 5cdd7c5f6..7f549b54e 100644 --- a/hugolib/path_seperators_windows_test.go +++ b/hugolib/path_seperators_windows_test.go @@ -1,6 +1,7 @@ package hugolib import ( + "github.com/spf13/hugo/tpl" "testing" ) @@ -10,8 +11,8 @@ const ( ) func TestTemplatePathSeperator(t *testing.T) { - tmpl := new(GoHtmlTemplate) - if name := tmpl.generateTemplateNameFrom(win_base, win_path); name != "sub1/index.html" { + tmpl := new(tpl.GoHtmlTemplate) + if name := tmpl.GenerateTemplateNameFrom(win_base, win_path); name != "sub1/index.html" { t.Fatalf("Template name incorrect. Expected: %s, Got: %s", "sub1/index.html", name) } } diff --git a/hugolib/site_show_plan_test.go b/hugolib/site_show_plan_test.go index 7d18a7e5b..f05304f23 100644 --- a/hugolib/site_show_plan_test.go +++ b/hugolib/site_show_plan_test.go @@ -2,26 +2,27 @@ package hugolib import ( "bytes" - "strings" - "testing" - + "github.com/spf13/hugo/helpers" "github.com/spf13/hugo/source" "github.com/spf13/hugo/target" + "path/filepath" + "strings" + "testing" ) const ALIAS_DOC_1 = "---\ntitle: alias doc\naliases:\n - \"alias1/\"\n - \"alias-2/\"\n---\naliases\n" var fakeSource = []source.ByteSource{ { - Name: "foo/bar/file.md", + Name: filepath.FromSlash("foo/bar/file.md"), Content: []byte(SIMPLE_PAGE), }, { - Name: "alias/test/file1.md", + Name: filepath.FromSlash("alias/test/file1.md"), Content: []byte(ALIAS_DOC_1), }, { - Name: "section/somecontent.html", + Name: filepath.FromSlash("section/somecontent.html"), Content: []byte(RENDER_NO_FRONT_MATTER), }, } @@ -36,25 +37,24 @@ func stringInSlice(a string, list []string) bool { } func checkShowPlanExpected(t *testing.T, s *Site, expected string) { + out := new(bytes.Buffer) if err := s.ShowPlan(out); err != nil { t.Fatalf("ShowPlan unexpectedly returned an error: %s", err) } got := out.String() + expected = filepath.FromSlash(expected) + // hackety hack: alias is an Url + expected = strings.Replace(expected, (helpers.FilePathSeparator + " =>"), "/ =>", -1) + expected = strings.Replace(expected, "n"+(helpers.FilePathSeparator+"a"), "n/a", -1) gotList := strings.Split(got, "\n") expectedList := strings.Split(expected, "\n") - for _, x := range gotList { - if !stringInSlice(x, expectedList) { - t.Errorf("%v %v %v %v", "\nShowPlan expected:\n", expected, "\ngot:\n", got) - } - } + diff := DiffStringSlices(gotList, expectedList) - for _, x := range expectedList { - if !stringInSlice(x, gotList) { - t.Errorf("%v %v %v %v", "\nShowPlan expected:\n", expected, "\ngot:\n", got) - } + if len(diff) > 0 { + t.Errorf("Got diff in show plan: %s", diff) } } @@ -126,3 +126,26 @@ func TestFileTargetPublishDir(t *testing.T) { "section/somecontent.html (renderer: n/a)\n canonical => ../public/section/somecontent/index.html\n\n" checkShowPlanExpected(t, s, expected) } + +// DiffStringSlices returns the difference between two string slices. +// See: +// http://stackoverflow.com/questions/19374219/how-to-find-the-difference-between-two-slices-of-strings-in-golang +func DiffStringSlices(slice1 []string, slice2 []string) []string { + diffStr := []string{} + m := map[string]int{} + + for _, s1Val := range slice1 { + m[s1Val] = 1 + } + for _, s2Val := range slice2 { + m[s2Val] = m[s2Val] + 1 + } + + for mKey, mVal := range m { + if mVal == 1 { + diffStr = append(diffStr, mKey) + } + } + + return diffStr +} diff --git a/hugolib/site_test.go b/hugolib/site_test.go index 26c49aeeb..798bc8c60 100644 --- a/hugolib/site_test.go +++ b/hugolib/site_test.go @@ -5,6 +5,7 @@ import ( "fmt" "html/template" "io" + "path/filepath" "strings" "testing" @@ -191,7 +192,7 @@ func TestRenderThingOrDefault(t *testing.T) { t.Errorf("Unable to write html: %s", err) } - file, err := hugofs.DestinationFS.Open("out/index.html") + file, err := hugofs.DestinationFS.Open(filepath.FromSlash("out/index.html")) if err != nil { t.Errorf("Unable to open html: %s", err) } @@ -221,9 +222,9 @@ func TestTargetPath(t *testing.T) { } for _, test := range tests { - p := pageMust(NewPageFrom(strings.NewReader(test.content), helpers.AbsPathify(test.doc))) + p := pageMust(NewPageFrom(strings.NewReader(test.content), helpers.AbsPathify(filepath.FromSlash(test.doc)))) - expected := test.expectedOutFile + expected := filepath.FromSlash(test.expectedOutFile) if p.TargetPath() != expected { t.Errorf("%s => OutFile expected: '%s', got: '%s'", test.doc, expected, p.TargetPath()) @@ -238,10 +239,10 @@ func TestTargetPath(t *testing.T) { func TestDraftAndFutureRender(t *testing.T) { hugofs.DestinationFS = new(afero.MemMapFs) sources := []source.ByteSource{ - {"sect/doc1.md", []byte("---\ntitle: doc1\ndraft: true\npublishdate: \"2414-05-29\"\n---\n# doc1\n*some content*")}, - {"sect/doc2.md", []byte("---\ntitle: doc2\ndraft: true\npublishdate: \"2012-05-29\"\n---\n# doc2\n*some content*")}, - {"sect/doc3.md", []byte("---\ntitle: doc3\ndraft: false\npublishdate: \"2414-05-29\"\n---\n# doc3\n*some content*")}, - {"sect/doc4.md", []byte("---\ntitle: doc4\ndraft: false\npublishdate: \"2012-05-29\"\n---\n# doc4\n*some content*")}, + {filepath.FromSlash("sect/doc1.md"), []byte("---\ntitle: doc1\ndraft: true\npublishdate: \"2414-05-29\"\n---\n# doc1\n*some content*")}, + {filepath.FromSlash("sect/doc2.md"), []byte("---\ntitle: doc2\ndraft: true\npublishdate: \"2012-05-29\"\n---\n# doc2\n*some content*")}, + {filepath.FromSlash("sect/doc3.md"), []byte("---\ntitle: doc3\ndraft: false\npublishdate: \"2414-05-29\"\n---\n# doc3\n*some content*")}, + {filepath.FromSlash("sect/doc4.md"), []byte("---\ntitle: doc4\ndraft: false\npublishdate: \"2012-05-29\"\n---\n# doc4\n*some content*")}, } siteSetup := func() *Site { @@ -296,14 +297,14 @@ func TestDraftAndFutureRender(t *testing.T) { func TestSkipRender(t *testing.T) { hugofs.DestinationFS = new(afero.MemMapFs) sources := []source.ByteSource{ - {"sect/doc1.html", []byte("---\nmarkup: markdown\n---\n# title\nsome *content*")}, - {"sect/doc2.html", []byte("<!doctype html><html><body>more content</body></html>")}, - {"sect/doc3.md", []byte("# doc3\n*some* content")}, - {"sect/doc4.md", []byte("---\ntitle: doc4\n---\n# doc4\n*some content*")}, - {"sect/doc5.html", []byte("<!doctype html><html>{{ template \"head\" }}<body>body5</body></html>")}, - {"sect/doc6.html", []byte("<!doctype html><html>{{ template \"head_abs\" }}<body>body5</body></html>")}, - {"doc7.html", []byte("<html><body>doc7 content</body></html>")}, - {"sect/doc8.html", []byte("---\nmarkup: md\n---\n# title\nsome *content*")}, + {filepath.FromSlash("sect/doc1.html"), []byte("---\nmarkup: markdown\n---\n# title\nsome *content*")}, + {filepath.FromSlash("sect/doc2.html"), []byte("<!doctype html><html><body>more content</body></html>")}, + {filepath.FromSlash("sect/doc3.md"), []byte("# doc3\n*some* content")}, + {filepath.FromSlash("sect/doc4.md"), []byte("---\ntitle: doc4\n---\n# doc4\n*some content*")}, + {filepath.FromSlash("sect/doc5.html"), []byte("<!doctype html><html>{{ template \"head\" }}<body>body5</body></html>")}, + {filepath.FromSlash("sect/doc6.html"), []byte("<!doctype html><html>{{ template \"head_abs\" }}<body>body5</body></html>")}, + {filepath.FromSlash("doc7.html"), []byte("<html><body>doc7 content</body></html>")}, + {filepath.FromSlash("sect/doc8.html"), []byte("---\nmarkup: md\n---\n# title\nsome *content*")}, } viper.Set("verbose", true) @@ -337,14 +338,14 @@ func TestSkipRender(t *testing.T) { doc string expected string }{ - {"sect/doc1.html", "\n\n<h1 id=\"title:5d74edbb89ef198cd37882b687940cda\">title</h1>\n\n<p>some <em>content</em></p>\n"}, - {"sect/doc2.html", "<!doctype html><html><body>more content</body></html>"}, - {"sect/doc3.html", "\n\n<h1 id=\"doc3:28c75a9e2162b8eccda73a1ab9ce80b4\">doc3</h1>\n\n<p><em>some</em> content</p>\n"}, - {"sect/doc4.html", "\n\n<h1 id=\"doc4:f8e6806123f341b8975509637645a4d3\">doc4</h1>\n\n<p><em>some content</em></p>\n"}, - {"sect/doc5.html", "<!doctype html><html><head><script src=\"script.js\"></script></head><body>body5</body></html>"}, - {"sect/doc6.html", "<!doctype html><html><head><script src=\"http://auth/bub/script.js\"></script></head><body>body5</body></html>"}, - {"doc7.html", "<html><body>doc7 content</body></html>"}, - {"sect/doc8.html", "\n\n<h1 id=\"title:0ae308ad73e2f37bd09874105281b5d8\">title</h1>\n\n<p>some <em>content</em></p>\n"}, + {filepath.FromSlash("sect/doc1.html"), "\n\n<h1 id=\"title:5d74edbb89ef198cd37882b687940cda\">title</h1>\n\n<p>some <em>content</em></p>\n"}, + {filepath.FromSlash("sect/doc2.html"), "<!doctype html><html><body>more content</body></html>"}, + {filepath.FromSlash("sect/doc3.html"), "\n\n<h1 id=\"doc3:28c75a9e2162b8eccda73a1ab9ce80b4\">doc3</h1>\n\n<p><em>some</em> content</p>\n"}, + {filepath.FromSlash("sect/doc4.html"), "\n\n<h1 id=\"doc4:f8e6806123f341b8975509637645a4d3\">doc4</h1>\n\n<p><em>some content</em></p>\n"}, + {filepath.FromSlash("sect/doc5.html"), "<!doctype html><html><head><script src=\"script.js\"></script></head><body>body5</body></html>"}, + {filepath.FromSlash("sect/doc6.html"), "<!doctype html><html><head><script src=\"http://auth/bub/script.js\"></script></head><body>body5</body></html>"}, + {filepath.FromSlash("doc7.html"), "<html><body>doc7 content</body></html>"}, + {filepath.FromSlash("sect/doc8.html"), "\n\n<h1 id=\"title:0ae308ad73e2f37bd09874105281b5d8\">title</h1>\n\n<p>some <em>content</em></p>\n"}, } for _, test := range tests { @@ -363,8 +364,8 @@ func TestSkipRender(t *testing.T) { func TestAbsUrlify(t *testing.T) { hugofs.DestinationFS = new(afero.MemMapFs) sources := []source.ByteSource{ - {"sect/doc1.html", []byte("<!doctype html><html><head></head><body><a href=\"#frag1\">link</a></body></html>")}, - {"content/blue/doc2.html", []byte("---\nf: t\n---\n<!doctype html><html><body>more content</body></html>")}, + {filepath.FromSlash("sect/doc1.html"), []byte("<!doctype html><html><head></head><bo |