shithub: hugo

Download patch

ref: 506e131f281be411c94b411324ef8bffc352cb66
parent: 54141f71dd0ffbd2af326581b78ecafe7f054f51
author: Bjørn Erik Pedersen <[email protected]>
date: Sun Aug 7 18:29:27 EDT 2016

Fix the shortcode ref tests

See #2309

--- a/hugolib/embedded_shortcodes_test.go
+++ b/hugolib/embedded_shortcodes_test.go
@@ -19,11 +19,13 @@
 	"os"
 	"path/filepath"
 	"regexp"
+	"strings"
 	"testing"
 
 	"github.com/spf13/hugo/helpers"
 	"github.com/spf13/hugo/tpl"
 	"github.com/spf13/viper"
+	"github.com/stretchr/testify/require"
 )
 
 const (
@@ -37,6 +39,9 @@
 }
 
 func doTestShortcodeCrossrefs(t *testing.T, relative bool) {
+	testCommonResetState()
+	viper.Set("baseURL", baseURL)
+
 	var refShortcode string
 	var expectedBase string
 
@@ -50,21 +55,20 @@
 
 	path := filepath.FromSlash("blog/post.md")
 	in := fmt.Sprintf(`{{< %s "%s" >}}`, refShortcode, path)
+
+	writeSource(t, "content/"+path, simplePageWithURL+": "+in)
+
 	expected := fmt.Sprintf(`%s/simple/url/`, expectedBase)
 
-	templ := tpl.New()
-	p, _ := pageFromString(simplePageWithURL, path)
-	p.Node.Site = newSiteInfoDefaultLanguage(
-		helpers.SanitizeURLKeepTrailingSlash(baseURL),
-		p)
+	sites, err := newHugoSitesDefaultLanguage()
+	require.NoError(t, err)
 
-	output, err := HandleShortcodes(in, p, templ)
+	require.NoError(t, sites.Build(BuildCfg{}))
+	require.Len(t, sites.Sites[0].Pages, 1)
 
-	if err != nil {
-		t.Fatal("Handle shortcode error", err)
-	}
+	output := string(sites.Sites[0].Pages[0].Content)
 
-	if output != expected {
+	if !strings.Contains(output, expected) {
 		t.Errorf("Got\n%q\nExpected\n%q", output, expected)
 	}
 }
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -247,16 +247,7 @@
 	var link string
 
 	if refURL.Path != "" {
-		// We may be in a shortcode and a not finished site, so look it the
-		// "raw page" collection.
-		// This works, but it also means AllPages and Pages will be empty for other
-		// shortcode use, which may be a slap in the face for many.
-		// TODO(bep) ml move shortcode handling to a "pre-render" handler, which also
-		// will fix a few other problems.
-		for _, page := range []*Page(*s.rawAllPages) {
-			if !page.shouldBuild() {
-				continue
-			}
+		for _, page := range []*Page(*s.AllPages) {
 			refPath := filepath.FromSlash(refURL.Path)
 			if page.Source.Path() == refPath || page.Source.LogicalName() == refPath {
 				target = page