Add some p-wrap shortcode tests
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 9 Jan 2016 15:11:38 +0000 (16:11 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 9 Jan 2016 15:11:38 +0000 (16:11 +0100)
Deliberetely made to pass, even if they (probably) should not.

See #1642

hugolib/shortcode_test.go

index 78ea6ee2729b5b649b9c0df706e32e8311fc7232..3a969441e6b181f334f99103b3c2e2a843b797f1 100644 (file)
@@ -15,6 +15,10 @@ package hugolib
 
 import (
        "fmt"
+       "github.com/spf13/hugo/hugofs"
+       "github.com/spf13/hugo/source"
+       "github.com/spf13/hugo/target"
+       "path/filepath"
        "reflect"
        "regexp"
        "sort"
@@ -371,6 +375,103 @@ func TestExtractShortcodes(t *testing.T) {
        }
 }
 
+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 {
        var asArray []string