shithub: hugo

Download patch

ref: 860f982cc454a6a5e111eb5b79915cd21f49240e
parent: e425226a2802993f4be3689565136965fb5bc58c
author: Tim Esselens <[email protected]>
date: Tue Nov 19 09:10:03 EST 2013

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 <[email protected]>

--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -265,7 +265,7 @@
 			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
--- a/hugolib/page_permalink_test.go
+++ b/hugolib/page_permalink_test.go
@@ -7,12 +7,18 @@
 
 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 @@
 				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()