shithub: hugo

Download patch

ref: f720fe56db9e064d10b86d98e7bbd40fb1c8489f
parent: d6ed17c60fd13c933347110c720afa09e04df1c8
author: Helder Pereira <helfper@gmail.com>
date: Sun Jun 14 18:33:00 EDT 2020

Fix aliases with uglyURLs

--- a/hugolib/alias_test.go
+++ b/hugolib/alias_test.go
@@ -46,12 +46,15 @@
 	c := qt.New(t)
 
 	tests := []struct {
-		urlPrefix string
-		settings  map[string]interface{}
+		fileSuffix string
+		urlPrefix  string
+		urlSuffix  string
+		settings   map[string]interface{}
 	}{
-		{"http://example.com", map[string]interface{}{"baseURL": "http://example.com"}},
-		{"http://example.com", map[string]interface{}{"baseURL": "http://example.com", "canonifyURLs": true}},
-		{"../..", map[string]interface{}{"relativeURLs": true}},
+		{"/index.html", "http://example.com", "/", map[string]interface{}{"baseURL": "http://example.com"}},
+		{"/index.html", "http://example.com", "/", map[string]interface{}{"baseURL": "http://example.com", "canonifyURLs": true}},
+		{"/index.html", "../..", "/", map[string]interface{}{"relativeURLs": true}},
+		{".html", "", ".html", map[string]interface{}{"uglyURLs": true}},
 	}
 
 	for _, test := range tests {
@@ -63,10 +66,10 @@
 		c.Assert(len(b.H.Sites[0].RegularPages()), qt.Equals, 1)
 
 		// the real page
-		b.AssertFileContent("public/blog/page/index.html", "For some moments the old man")
+		b.AssertFileContent("public/blog/page"+test.fileSuffix, "For some moments the old man")
 		// the alias redirectors
-		b.AssertFileContent("public/foo/bar/index.html", "<meta http-equiv=\"refresh\" content=\"0; url="+test.urlPrefix+"/blog/page/\" />")
-		b.AssertFileContent("public/blog/rel/index.html", "<meta http-equiv=\"refresh\" content=\"0; url="+test.urlPrefix+"/blog/page/\" />")
+		b.AssertFileContent("public/foo/bar"+test.fileSuffix, "<meta http-equiv=\"refresh\" content=\"0; url="+test.urlPrefix+"/blog/page"+test.urlSuffix+"\" />")
+		b.AssertFileContent("public/blog/rel"+test.fileSuffix, "<meta http-equiv=\"refresh\" content=\"0; url="+test.urlPrefix+"/blog/page"+test.urlSuffix+"\" />")
 	}
 }
 
--- a/hugolib/site_render.go
+++ b/hugolib/site_render.go
@@ -338,17 +338,16 @@
 				if isRelative {
 					// Make alias relative, where "." will be on the
 					// same directory level as the current page.
-					// TODO(bep) ugly URLs doesn't seem to be supported in
-					// aliases, I'm not sure why not.
-					basePath := of.RelPermalink()
-					if strings.HasSuffix(basePath, "/") {
-						basePath = path.Join(basePath, "..")
-					}
+					basePath := path.Join(of.RelPermalink(), "..")
 					a = path.Join(basePath, a)
 
-				} else if f.Path != "" {
+				} else {
 					// Make sure AMP and similar doesn't clash with regular aliases.
 					a = path.Join(f.Path, a)
+				}
+
+				if s.UglyURLs && !strings.HasSuffix(a, ".html") {
+					a += ".html"
 				}
 
 				lang := p.Language().Lang