shithub: hugo

Download patch

ref: 1ce184b7f1df10ad8815dfe891e053eb04f099ea
parent: 48870fef2e2a4f3428d1212df4f1443723892acc
author: Bjørn Erik Pedersen <[email protected]>
date: Sat Jan 9 11:11:38 EST 2016

Add some p-wrap shortcode tests

Deliberetely made to pass, even if they (probably) should not.

See #1642

--- a/hugolib/shortcode_test.go
+++ b/hugolib/shortcode_test.go
@@ -15,6 +15,10 @@
 
 import (
 	"fmt"
+	"github.com/spf13/hugo/hugofs"
+	"github.com/spf13/hugo/source"
+	"github.com/spf13/hugo/target"
+	"path/filepath"
 	"reflect"
 	"regexp"
 	"sort"
@@ -369,6 +373,103 @@
 			}
 		}
 	}
+}
+
+func TestShortcodesInSite(t *testing.T) {
+	viper.Reset()
+	defer viper.Reset()
+
+	baseURL := "http://foo/bar"
+	viper.Set("DefaultExtension", "html")
+	viper.Set("baseurl", baseURL)
+	viper.Set("UglyURLs", false)
+	viper.Set("verbose", true)
+
+	tests := []struct {
+		contentPath string
+		content     string
+		outFile     string
+		expected    string
+	}{
+		{"sect/doc1.md", `a{{< b >}}c`,
+			filepath.FromSlash("sect/doc1/index.html"), "<p>abc</p>\n"},
+		// Issue #1642: Multiple shortcodes wrapped in P
+		// Deliberately forced to pass even if they maybe shouldn't.
+		{"sect/doc2.md", `a
+
+{{< b >}}		
+{{< c >}}
+{{< d >}}
+
+e`,
+			filepath.FromSlash("sect/doc2/index.html"),
+			"<p>a</p>\n\n<p>b<br />\nc\nd</p>\n\n<p>e</p>\n"},
+		{"sect/doc3.md", `a
+
+{{< b >}}		
+{{< c >}}
+
+{{< d >}}
+
+e`,
+			filepath.FromSlash("sect/doc3/index.html"),
+			"<p>a</p>\n\n<p>b<br />\nc</p>\n\nd\n\n<p>e</p>\n"},
+		{"sect/doc4.md", `a
+{{< b >}}
+{{< b >}}
+{{< b >}}
+{{< b >}}
+{{< b >}}
+
+
+
+
+
+
+
+
+
+
+`,
+			filepath.FromSlash("sect/doc4/index.html"),
+			"<p>a\nb\nb\nb\nb\nb</p>\n"},
+	}
+
+	sources := make([]source.ByteSource, len(tests))
+
+	for i, test := range tests {
+		sources[i] = source.ByteSource{filepath.FromSlash(test.contentPath), []byte(test.content)}
+	}
+
+	s := &Site{
+		Source:  &source.InMemorySource{ByteSource: sources},
+		Targets: targetList{Page: &target.PagePub{UglyURLs: false}},
+	}
+
+	s.initializeSiteInfo()
+	templatePrep(s)
+	s.Tmpl.AddInternalShortcode("b.html", `b`)
+	s.Tmpl.AddInternalShortcode("c.html", `c`)
+	s.Tmpl.AddInternalShortcode("d.html", `d`)
+
+	must(s.addTemplate("_default/single.html", "{{.Content}}"))
+
+	createAndRenderPages(t, s)
+
+	for _, test := range tests {
+		file, err := hugofs.DestinationFS.Open(test.outFile)
+
+		if err != nil {
+			t.Fatalf("Did not find %s in target: %s", test.outFile, err)
+		}
+
+		content := helpers.ReaderToString(file)
+
+		if content != test.expected {
+			t.Errorf("%s content expected:\n%q\ngot:\n%q", test.outFile, test.expected, content)
+		}
+	}
+
 }
 
 func collectAndSortShortcodes(shortcodes map[string]shortcode) []string {