From 860f982cc454a6a5e111eb5b79915cd21f49240e Mon Sep 17 00:00:00 2001 From: Tim Esselens Date: Tue, 19 Nov 2013 14:10:03 +0100 Subject: [PATCH] fixed trailing dir slash when using slug See testcase, dir + slug contained double slash when dir had a trailing slash. Signed-off-by: Noah Campbell --- hugolib/page.go | 2 +- hugolib/page_permalink_test.go | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/hugolib/page.go b/hugolib/page.go index f9af82448..101f6c884 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -265,7 +265,7 @@ func (p *Page) permalink() (*url.URL, error) { if p.Site.Config != nil && p.Site.Config.UglyUrls { permalink = path.Join(dir, p.Slug, p.Extension) } else { - permalink = dir + "/" + p.Slug + "/" + permalink = path.Join(dir, p.Slug) + "/" } } else if len(pUrl) > 2 { permalink = pUrl diff --git a/hugolib/page_permalink_test.go b/hugolib/page_permalink_test.go index b4ef66ba7..fd1f2b2f8 100644 --- a/hugolib/page_permalink_test.go +++ b/hugolib/page_permalink_test.go @@ -7,12 +7,18 @@ import ( func TestPermalink(t *testing.T) { tests := []struct { + file string + dir string base template.URL + slug string expectedAbs string expectedRel string }{ - {"", "/x/y/z/boofar", "/x/y/z/boofar"}, - {"http://barnew/", "http://barnew/x/y/z/boofar", "/x/y/z/boofar"}, + {"x/y/z/boofar.md", "x/y/z", "", "", "/x/y/z/boofar", "/x/y/z/boofar"}, + {"x/y/z/boofar.md", "x/y/z/", "", "", "/x/y/z/boofar", "/x/y/z/boofar"}, + {"x/y/z/boofar.md", "x/y/z/", "", "boofar", "/x/y/z/boofar/", "/x/y/z/boofar/"}, + {"x/y/z/boofar.md", "x/y/z", "http://barnew/", "", "http://barnew/x/y/z/boofar", "/x/y/z/boofar"}, + {"x/y/z/boofar.md", "x/y/z/", "http://barnew/", "boofar", "http://barnew/x/y/z/boofar/", "/x/y/z/boofar/"}, } for _, test := range tests { @@ -21,7 +27,13 @@ func TestPermalink(t *testing.T) { UrlPath: UrlPath{Section: "z"}, Site: SiteInfo{BaseUrl: test.base}, }, - File: File{FileName: "x/y/z/boofar.md", Dir: "x/y/z"}, + File: File{FileName: test.file, Dir: test.dir}, + } + + if test.slug != "" { + p.update(map[string]interface{}{ + "slug": test.slug, + }) } u, err := p.Permalink()