// SPDX-License-Identifier: AGPL-3.0-or-later package web import ( "context" "strings" "testing" "github.com/alecthomas/chroma/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "bnema.dev/ermite/internal/domain" ) func TestHighlightLines(t *testing.T) { t.Parallel() v := highlight(context.Background(), "a.go", "package main\n\nfunc main() {}\n") assert.Equal(t, 3, v.lines) assert.Equal(t, "Go", v.lang) h := string(v.html) assert.Contains(t, h, `1package`) assert.Contains(t, h, `2`) assert.NotContains(t, h, "style=") // No final line feed, CRLF and lone CR are lines too. assert.Equal(t, 2, highlight(context.Background(), "x.txt", "a\nb").lines) assert.Equal(t, 3, highlight(context.Background(), "x.txt", "a\r\nb\rc").lines) assert.Equal(t, 0, highlight(context.Background(), "x.txt", "").lines) } func TestHighlightFallbackIsPlainAndEscaped(t *testing.T) { t.Parallel() v := highlight(context.Background(), "unknown.zzz", " & \"q\"\n") assert.Equal(t, "", v.lang) h := string(v.html) assert.Contains(t, h, "<script>alert(1)</script> & "q"") assert.NotContains(t, h, "