1
// Copyright 2021 The Gitea Authors. All rights reserved.
2
// SPDX-License-Identifier: MIT
11
"github.com/stretchr/testify/assert"
14
func lines(s string) (out []template.HTML) {
15
// "" => [], "a" => ["a"], "a\n" => ["a\n"], "a\nb" => ["a\n", "b"] (each line always includes EOL "\n" if it exists)
16
out = make([]template.HTML, 0)
17
s = strings.ReplaceAll(strings.ReplaceAll(strings.TrimSpace(s), "\n", ""), `\n`, "\n")
19
if p := strings.IndexByte(s, '\n'); p != -1 {
20
out = append(out, template.HTML(s[:p+1]))
27
out = append(out, template.HTML(s))
32
func TestFile(t *testing.T) {
49
lexerName: "JavaScript",
60
want: lines("<>"),
61
lexerName: "Plaintext",
66
want: lines(`<span class="o"><</span><span class="o">></span>`),
72
want: lines(`<span class="n">a</span><span class="o">=</span><span class="mi">1</span>`),
76
name: "eol-newline1.py",
78
want: lines(`<span class="n">a</span><span class="o">=</span><span class="mi">1</span>\n`),
82
name: "eol-newline2.py",
85
<span class="n">a</span><span class="o">=</span><span class="mi">1</span>\n
92
name: "empty-line-with-space.py",
93
code: strings.ReplaceAll(strings.TrimSpace(`
102
<span class="n">def</span><span class="p">:</span>\n
103
<span class="n">a</span><span class="o">=</span><span class="mi">1</span>\n
105
<span class="n">b</span><span class="o">=</span><span class="sa"></span><span class="s1">'</span><span class="s1">'</span>\n
107
<span class="n">c</span><span class="o">=</span><span class="mi">2</span>`,
113
for _, tt := range tests {
114
t.Run(tt.name, func(t *testing.T) {
115
out, lexerName, err := File(tt.name, "", []byte(tt.code))
116
assert.NoError(t, err)
117
assert.EqualValues(t, tt.want, out)
118
assert.Equal(t, tt.lexerName, lexerName)
123
func TestPlainText(t *testing.T) {
137
want: lines("<>"),
145
name: "eol-newline1.py",
147
want: lines(`a=1\n`),
150
name: "eol-newline2.py",
158
name: "empty-line-with-space.py",
159
code: strings.ReplaceAll(strings.TrimSpace(`
177
for _, tt := range tests {
178
t.Run(tt.name, func(t *testing.T) {
179
out := PlainText([]byte(tt.code))
180
assert.EqualValues(t, tt.want, out)