publisher: Also test minified HTML in the element collector
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 7 Apr 2021 06:33:31 +0000 (08:33 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 7 Apr 2021 14:40:15 +0000 (16:40 +0200)
Updates #7567

publisher/htmlElementsCollector_test.go

index 5a1802234b46938c60f234f3c84b5b8396928c0e..5b2d85d47fe1b925aa69057358a834cc9360e966 100644 (file)
@@ -18,6 +18,12 @@ import (
        "strings"
        "testing"
 
+       "github.com/gohugoio/hugo/minifiers"
+
+       "github.com/gohugoio/hugo/media"
+       "github.com/gohugoio/hugo/output"
+       "github.com/spf13/viper"
+
        qt "github.com/frankban/quicktest"
 )
 
@@ -42,6 +48,11 @@ func TestClassCollector(t *testing.T) {
                }
        }
 
+       skipMinifyTest := map[string]bool{
+               "Script tags content should be skipped": true, // https://github.com/tdewolff/minify/issues/396
+
+       }
+
        for _, test := range []struct {
                name   string
                html   string
@@ -96,12 +107,25 @@ func TestClassCollector(t *testing.T) {
                {"Pre tags content should be skipped", `<pre class="preclass"><span>foo</span><span>bar</span></pre><div class="foo"></div>`, f("div pre", "foo preclass", "")},
                {"Textare tags content should be skipped", `<textarea class="textareaclass"><span>foo</span><span>bar</span></textarea><div class="foo"></div>`, f("div textarea", "foo textareaclass", "")},
        } {
-               c.Run(test.name, func(c *qt.C) {
-                       w := newHTMLElementsCollectorWriter(newHTMLElementsCollector())
-                       fmt.Fprint(w, test.html)
-                       got := w.collector.getHTMLElements()
-                       c.Assert(got, qt.DeepEquals, test.expect)
-               })
+
+               for _, minify := range []bool{false, true} {
+                       c.Run(fmt.Sprintf("%s--minify-%t", test.name, minify), func(c *qt.C) {
+                               w := newHTMLElementsCollectorWriter(newHTMLElementsCollector())
+
+                               if minify {
+                                       if skipMinifyTest[test.name] {
+                                               c.Skip("skip minify test")
+                                       }
+                                       v := viper.New()
+                                       m, _ := minifiers.New(media.DefaultTypes, output.DefaultFormats, v)
+                                       m.Minify(media.HTMLType, w, strings.NewReader(test.html))
+                               } else {
+                                       fmt.Fprint(w, test.html)
+                               }
+                               got := w.collector.getHTMLElements()
+                               c.Assert(got, qt.DeepEquals, test.expect)
+                       })
+               }
        }
 }