summaryrefslogtreecommitdiffstats
path: root/hugolib
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-07-15 11:05:14 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-07-21 13:08:32 +0200
commitdbe63970e09313dec287816ab070b5c2f5a13b1b (patch)
tree45585ef52298cab5322c67e65e9d106c7c65127a /hugolib
parent0c90e6d710deb6a316ade0891bbf0ad83376df40 (diff)
hugolib: Support reflinks starting with a slash
Fixes #3703
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/site.go3
-rw-r--r--hugolib/site_test.go12
2 files changed, 12 insertions, 3 deletions
diff --git a/hugolib/site.go b/hugolib/site.go
index b663a39f0..47c2af453 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -416,6 +416,9 @@ func (s *SiteInfo) refLink(ref string, page *Page, relative bool, outputFormat s
var refURL *url.URL
var err error
+ ref = filepath.ToSlash(ref)
+ ref = strings.TrimPrefix(ref, "/")
+
refURL, err = url.Parse(ref)
if err != nil {
diff --git a/hugolib/site_test.go b/hugolib/site_test.go
index ff8fdf48b..6bcfaa441 100644
--- a/hugolib/site_test.go
+++ b/hugolib/site_test.go
@@ -232,6 +232,8 @@ func doTestCrossrefs(t *testing.T, relative, uglyURLs bool) {
expectedPathSuffix = "/index.html"
}
+ doc3Slashed := filepath.FromSlash("/sect/doc3.md")
+
sources := []source.ByteSource{
{
Name: filepath.FromSlash("sect/doc1.md"),
@@ -251,6 +253,11 @@ THE END.`, refShortcode)),
Name: filepath.FromSlash("sect/doc3.md"),
Content: []byte(fmt.Sprintf(`**Ref 1:**{{< %s "sect/doc3.md" >}}.`, refShortcode)),
},
+ // Issue #3703
+ {
+ Name: filepath.FromSlash("sect/doc4.md"),
+ Content: []byte(fmt.Sprintf(`**Ref 1:**{{< %s "%s" >}}.`, refShortcode, doc3Slashed)),
+ },
}
cfg, fs := newTestCfg()
@@ -271,9 +278,7 @@ THE END.`, refShortcode)),
WithTemplate: createWithTemplateFromNameValues("_default/single.html", "{{.Content}}")},
BuildCfg{})
- if len(s.RegularPages) != 3 {
- t.Fatalf("Expected 3 got %d pages", len(s.AllPages))
- }
+ require.Len(t, s.RegularPages, 4)
th := testHelper{s.Cfg, s.Fs, t}
@@ -284,6 +289,7 @@ THE END.`, refShortcode)),
{filepath.FromSlash(fmt.Sprintf("public/sect/doc1%s", expectedPathSuffix)), fmt.Sprintf("<p>Ref 2: %s/sect/doc2%s</p>\n", expectedBase, expectedURLSuffix)},
{filepath.FromSlash(fmt.Sprintf("public/sect/doc2%s", expectedPathSuffix)), fmt.Sprintf("<p><strong>Ref 1:</strong></p>\n\n%s/sect/doc1%s\n\n<p>THE END.</p>\n", expectedBase, expectedURLSuffix)},
{filepath.FromSlash(fmt.Sprintf("public/sect/doc3%s", expectedPathSuffix)), fmt.Sprintf("<p><strong>Ref 1:</strong>%s/sect/doc3%s.</p>\n", expectedBase, expectedURLSuffix)},
+ {filepath.FromSlash(fmt.Sprintf("public/sect/doc4%s", expectedPathSuffix)), fmt.Sprintf("<p><strong>Ref 1:</strong>%s/sect/doc3%s.</p>\n", expectedBase, expectedURLSuffix)},
}
for _, test := range tests {