publisher: Also test minified HTML in the element collector

Updates #7567
This commit is contained in:
Bjørn Erik Pedersen 2021-04-07 08:33:31 +02:00
parent 8a308944e4
commit 3d5dbdcb1a

View file

@ -18,6 +18,12 @@ import (
"strings" "strings"
"testing" "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" 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 { for _, test := range []struct {
name string name string
html string html string
@ -96,14 +107,27 @@ 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", "")}, {"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", "")}, {"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) {
for _, minify := range []bool{false, true} {
c.Run(fmt.Sprintf("%s--minify-%t", test.name, minify), func(c *qt.C) {
w := newHTMLElementsCollectorWriter(newHTMLElementsCollector()) 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) fmt.Fprint(w, test.html)
}
got := w.collector.getHTMLElements() got := w.collector.getHTMLElements()
c.Assert(got, qt.DeepEquals, test.expect) c.Assert(got, qt.DeepEquals, test.expect)
}) })
} }
} }
}
func BenchmarkClassCollectorWriter(b *testing.B) { func BenchmarkClassCollectorWriter(b *testing.B) {
const benchHTML = ` const benchHTML = `