Skip to content

Commit

Permalink
hugolib: Support reflinks starting with a slash
Browse files Browse the repository at this point in the history
Fixes #3703
  • Loading branch information
bep committed Jul 21, 2017
1 parent 0c90e6d commit dbe6397
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
3 changes: 3 additions & 0 deletions hugolib/site.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
12 changes: 9 additions & 3 deletions hugolib/site_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand All @@ -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()
Expand All @@ -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}

Expand All @@ -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 {
Expand Down

0 comments on commit dbe6397

Please sign in to comment.