shithub: hugo

Download patch

ref: 542e220cc41cb55fa17f38573bab9df5a59344c2
parent: 988962e8b530363278d8946729b661f03c5ee081
author: Bjørn Erik Pedersen <[email protected]>
date: Sun Mar 13 18:06:51 EDT 2016

Make tests green on both Pygments 2.0.2 and 2.1.3

See #1969

--- a/helpers/content_renderer_test.go
+++ b/helpers/content_renderer_test.go
@@ -16,6 +16,7 @@
 import (
 	"bytes"
 	"github.com/spf13/viper"
+	"regexp"
 	"testing"
 )
 
@@ -50,9 +51,11 @@
 		enabled         bool
 		input, expected string
 	}
+
+	// Pygments 2.0 and 2.1 have slightly different outputs so only do partial matching
 	data := []test{
-		{true, "<html></html>", "<div class=\"highlight\"><pre><code class=\"language-html\" data-lang=\"html\"><span class=\"nt\">&lt;html&gt;&lt;/html&gt;</span>\n</code></pre></div>\n"},
-		{false, "<html></html>", "<pre><code class=\"language-html\">&lt;html&gt;&lt;/html&gt;</code></pre>\n"},
+		{true, "<html></html>", `(?s)^<div class="highlight"><pre><code class="language-html" data-lang="html">.*?</code></pre></div>\n$`},
+		{false, "<html></html>", `(?s)^<pre><code class="language-html">.*?</code></pre>\n$`},
 	}
 
 	viper.Reset()
@@ -65,12 +68,21 @@
 		viper.Set("PygmentsCodeFences", d.enabled)
 
 		result := render(d.input)
-		if result != d.expected {
+
+		expectedRe, err := regexp.Compile(d.expected)
+
+		if err != nil {
+			t.Fatalf("Invalid regexp", err)
+		}
+		matched := expectedRe.MatchString(result)
+
+		if !matched {
 			t.Errorf("Test %d failed. BlackFriday enabled:%t, Expected:\n%q got:\n%q", i, d.enabled, d.expected, result)
 		}
 
 		result = renderWithMmark(d.input)
-		if result != d.expected {
+		matched = expectedRe.MatchString(result)
+		if !matched {
 			t.Errorf("Test %d failed. Mmark enabled:%t, Expected:\n%q got:\n%q", i, d.enabled, d.expected, result)
 		}
 	}
--- a/hugolib/shortcode_test.go
+++ b/hugolib/shortcode_test.go
@@ -52,7 +52,7 @@
 	}
 
 	if output != expected {
-		t.Fatalf("Shortcode render didn't match. got %q but expected %q", output, expected)
+		t.Fatalf("Shortcode render didn't match. got \n%q but expected \n%q", output, expected)
 	}
 }
 
@@ -258,13 +258,28 @@
 	viper.Set("PygmentsStyle", "bw")
 	viper.Set("PygmentsUseClasses", false)
 
-	tem := tpl.New()
+	templ := tpl.New()
 
 	code := `
 {{< highlight java >}}
 void do();
 {{< /highlight >}}`
-	CheckShortCodeMatch(t, code, "\n<div class=\"highlight\" style=\"background: #ffffff\"><pre style=\"line-height: 125%\"><span style=\"font-weight: bold\">void</span> do();\n</pre></div>\n", tem)
+
+	p, _ := pageFromString(SIMPLE_PAGE, "simple.md")
+	output, err := HandleShortcodes(code, p, templ)
+
+	if err != nil {
+		t.Fatal("Handle shortcode error", err)
+	}
+	matched, err := regexp.MatchString("(?s)^\n<div class=\"highlight\" style=\"background: #ffffff\"><pre style=\"line-height: 125%\">.*?void</span> do().*?</pre></div>\n$", output)
+
+	if err != nil {
+		t.Fatal("Regexp error", err)
+	}
+
+	if !matched {
+		t.Error("Hightlight mismatch, got\n", output)
+	}
 }
 
 const testScPlaceholderRegexp = "{#{#HUGOSHORTCODE-\\d+#}#}"