@@ -6,10 +6,13 @@ import (
66 "strings"
77 "testing"
88
9+ "charm.land/glamour/v2"
910 "github.com/charmbracelet/x/ansi"
1011 runewidth "github.com/mattn/go-runewidth"
1112 "github.com/stretchr/testify/assert"
1213 "github.com/stretchr/testify/require"
14+
15+ "github.com/docker/docker-agent/pkg/tui/styles"
1316)
1417
1518// stripANSI removes ANSI escape sequences from a string.
@@ -19,6 +22,19 @@ func stripANSI(s string) string {
1922 return ansiRegex .ReplaceAllString (s , "" )
2023}
2124
25+ // newGlamourRenderer creates a markdown renderer using glamour.
26+ // Used as a reference implementation to compare against the fast renderer.
27+ func newGlamourRenderer (width int ) * glamour.TermRenderer {
28+ style := styles .MarkdownStyle ()
29+
30+ r , _ := glamour .NewTermRenderer (
31+ glamour .WithWordWrap (width ),
32+ glamour .WithStyles (style ),
33+ glamour .WithPreservedNewLines (),
34+ )
35+ return r
36+ }
37+
2238func TestFastRendererBasicText (t * testing.T ) {
2339 t .Parallel ()
2440
@@ -909,7 +925,7 @@ func BenchmarkFastRenderer(b *testing.B) {
909925}
910926
911927func BenchmarkGlamourRenderer (b * testing.B ) {
912- r := NewGlamourRenderer (80 )
928+ r := newGlamourRenderer (80 )
913929 for b .Loop () {
914930 _ , _ = r .Render (benchmarkInput )
915931 }
@@ -924,7 +940,7 @@ func BenchmarkFastRendererSmall(b *testing.B) {
924940}
925941
926942func BenchmarkGlamourRendererSmall (b * testing.B ) {
927- r := NewGlamourRenderer (80 )
943+ r := newGlamourRenderer (80 )
928944 input := "Hello **world**, this is a *test*."
929945 for b .Loop () {
930946 _ , _ = r .Render (input )
@@ -940,7 +956,7 @@ func BenchmarkFastRendererCodeBlock(b *testing.B) {
940956}
941957
942958func BenchmarkGlamourRendererCodeBlock (b * testing.B ) {
943- r := NewGlamourRenderer (80 )
959+ r := newGlamourRenderer (80 )
944960 input := "```go\n func main() {\n \t fmt.Println(\" hello`\" )\n }\n ```"
945961 for b .Loop () {
946962 _ , _ = r .Render (input )
@@ -962,7 +978,7 @@ func BenchmarkFastRendererTable(b *testing.B) {
962978}
963979
964980func BenchmarkGlamourRendererTable (b * testing.B ) {
965- r := NewGlamourRenderer (80 )
981+ r := newGlamourRenderer (80 )
966982 for b .Loop () {
967983 _ , _ = r .Render (benchmarkTableInput )
968984 }
@@ -976,7 +992,7 @@ func BenchmarkFastRendererTableWidth20(b *testing.B) {
976992}
977993
978994func BenchmarkGlamourRendererTableWidth20 (b * testing.B ) {
979- r := NewGlamourRenderer (20 )
995+ r := newGlamourRenderer (20 )
980996 for b .Loop () {
981997 _ , _ = r .Render (benchmarkTableInput )
982998 }
@@ -990,7 +1006,7 @@ func BenchmarkFastRendererTableWidth200(b *testing.B) {
9901006}
9911007
9921008func BenchmarkGlamourRendererTableWidth200 (b * testing.B ) {
993- r := NewGlamourRenderer (200 )
1009+ r := newGlamourRenderer (200 )
9941010 for b .Loop () {
9951011 _ , _ = r .Render (benchmarkTableInput )
9961012 }
@@ -1734,7 +1750,7 @@ func BenchmarkStreamingGlamourRenderer(b *testing.B) {
17341750
17351751 b .ResetTimer ()
17361752 for b .Loop () {
1737- r := NewGlamourRenderer (80 )
1753+ r := newGlamourRenderer (80 )
17381754 var accumulated strings.Builder
17391755 for _ , chunk := range chunks {
17401756 accumulated .WriteString (chunk )
0 commit comments