Make tests green on both Pygments 2.0.2 and 2.1.3
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 13 Mar 2016 21:06:51 +0000 (22:06 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 13 Mar 2016 21:06:51 +0000 (22:06 +0100)
See #1969

helpers/content_renderer_test.go
hugolib/shortcode_test.go

index 09ddf8e60eaf8da1df78a10f8790c20661f6f13c..2110637cbf68270dc1028d95ead2d11f1f5d2f10 100644 (file)
@@ -16,6 +16,7 @@ package helpers
 import (
        "bytes"
        "github.com/spf13/viper"
+       "regexp"
        "testing"
 )
 
@@ -50,9 +51,11 @@ func TestCodeFence(t *testing.T) {
                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 @@ func TestCodeFence(t *testing.T) {
                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)
                }
        }
index 07af6b3a662e56b4325238f61c577a0d8c4753cc..5d276301697f6b86b543f2b306031472fedcc524 100644 (file)
@@ -52,7 +52,7 @@ func CheckShortCodeMatchAndError(t *testing.T, input, expected string, template
        }
 
        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 @@ func TestHighlight(t *testing.T) {
        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+#}#}"