diff --git a/helpers/path.go b/helpers/path.go index 71ffee980..0dee8db4c 100644 --- a/helpers/path.go +++ b/helpers/path.go @@ -331,6 +331,10 @@ func GetRelativePath(path, base string) (final string, err error) { if err != nil { return "", err } + + if strings.HasSuffix(path, "/") && !strings.HasSuffix(name, "/") { + name += "/" + } return name, nil } diff --git a/helpers/path_test.go b/helpers/path_test.go index c9b4beac1..cb8714266 100644 --- a/helpers/path_test.go +++ b/helpers/path_test.go @@ -65,6 +65,7 @@ func TestGetRelativePath(t *testing.T) { expect interface{} }{ {filepath.FromSlash("/a/b"), filepath.FromSlash("/a"), filepath.FromSlash("b")}, + {filepath.FromSlash("/a/b/c/"), filepath.FromSlash("/a"), filepath.FromSlash("b/c/")}, {filepath.FromSlash("/c"), filepath.FromSlash("/a/b"), filepath.FromSlash("../../c")}, {filepath.FromSlash("/c"), "", false}, } diff --git a/hugolib/page_permalink_test.go b/hugolib/page_permalink_test.go index e7f7400ba..2e860ef8d 100644 --- a/hugolib/page_permalink_test.go +++ b/hugolib/page_permalink_test.go @@ -26,6 +26,9 @@ func TestPermalink(t *testing.T) { }{ {"x/y/z/boofar.md", "x/y/z", "", "", "", false, false, "/x/y/z/boofar/", "/x/y/z/boofar/"}, {"x/y/z/boofar.md", "x/y/z/", "", "", "", false, false, "/x/y/z/boofar/", "/x/y/z/boofar/"}, + // Issue #1174 + {"x/y/z/boofar.md", "x/y/z", "http://gopher.com/", "", "", false, true, "http://gopher.com/x/y/z/boofar/", "/x/y/z/boofar/"}, + {"x/y/z/boofar.md", "x/y/z/", "http://gopher.com/", "", "", true, true, "http://gopher.com/x/y/z/boofar.html", "/x/y/z/boofar.html"}, {"x/y/z/boofar.md", "x/y/z/", "", "boofar", "", false, false, "/x/y/z/boofar/", "/x/y/z/boofar/"}, {"x/y/z/boofar.md", "x/y/z", "http://barnew/", "", "", false, false, "http://barnew/x/y/z/boofar/", "/x/y/z/boofar/"}, {"x/y/z/boofar.md", "x/y/z/", "http://barnew/", "boofar", "", false, false, "http://barnew/x/y/z/boofar/", "/x/y/z/boofar/"},