diff --git a/baseline.txt b/baseline.txt
new file mode 100644
index 000000000..348ec937d
--- /dev/null
+++ b/baseline.txt
@@ -0,0 +1,4 @@
+PASS
+BenchmarkChain 10000 101219 ns/op 23919 B/op 222 allocs/op
+BenchmarkTransform 50000 51625 ns/op 11858 B/op 135 allocs/op
+ok github.com/spf13/hugo/transform 4.172s
diff --git a/transform/chain_test.go b/transform/chain_test.go
index c7105cdad..b479ac1e3 100644
--- a/transform/chain_test.go
+++ b/transform/chain_test.go
@@ -16,7 +16,7 @@ func TestChainZeroTransformers(t *testing.T) {
func TestChainOneTransformer(t *testing.T) {
tr := NewChain(&AbsURL{BaseURL: "http://base"})
- apply(t, tr, abs_url_tests)
+ apply(t.Errorf, tr, abs_url_tests)
}
const H5_JS_CONTENT_ABS_URL_WITH_NAV = "
content foobar. Follow up"
@@ -32,5 +32,16 @@ func TestChainTwoTransformer(t *testing.T) {
&AbsURL{BaseURL: "http://two"},
&NavActive{Section: "section_1"},
)
- apply(t, tr, two_chain_tests)
+ apply(t.Errorf, tr, two_chain_tests)
+}
+
+func BenchmarkChain(b *testing.B) {
+
+ tr := NewChain(
+ &AbsURL{BaseURL: "http://two"},
+ &NavActive{Section: "section_1"},
+ )
+ for i := 0; i < b.N; i++ {
+ apply(b.Errorf, tr, two_chain_tests)
+ }
}
diff --git a/transform/nav_test.go b/transform/nav_test.go
index 4d578b87a..8ee46f116 100644
--- a/transform/nav_test.go
+++ b/transform/nav_test.go
@@ -58,3 +58,13 @@ func TestSetNav(t *testing.T) {
t.Errorf("NavActive.Apply output expected and got:\n%q\n%q", expected, out.String())
}
}
+
+func BenchmarkTransform(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ tr := &NavActive{Section: "section_2"}
+ out := new(bytes.Buffer)
+ if err := tr.Apply(out, strings.NewReader(HTML_WITH_NAV)); err != nil {
+ b.Errorf("Unexpected error in Apply() for NavActive: %s", err)
+ }
+ }
+}
diff --git a/transform/posttrans_test.go b/transform/posttrans_test.go
index fd6bc18b2..103e73a4a 100644
--- a/transform/posttrans_test.go
+++ b/transform/posttrans_test.go
@@ -21,7 +21,7 @@ func TestAbsUrlify(t *testing.T) {
BaseURL: "http://base",
}
- apply(t, tr, abs_url_tests)
+ apply(t.Errorf, tr, abs_url_tests)
}
type test struct {
@@ -35,15 +35,17 @@ var abs_url_tests = []test{
{H5_JS_CONTENT_ABS_URL, H5_JS_CONTENT_ABS_URL},
}
-func apply(t *testing.T, tr Transformer, tests []test) {
+type errorf func (string, ...interface{})
+
+func apply(ef errorf, tr Transformer, tests []test) {
for _, test := range tests {
out := new(bytes.Buffer)
err := tr.Apply(out, strings.NewReader(test.content))
if err != nil {
- t.Errorf("Unexpected error: %s", err)
+ ef("Unexpected error: %s", err)
}
if test.expected != string(out.Bytes()) {
- t.Errorf("Expected:\n%s\nGot:\n%s", test.expected, string(out.Bytes()))
+ ef("Expected:\n%s\nGot:\n%s", test.expected, string(out.Bytes()))
}
}
}