0747592865
The code for detection of lines in highlight.go is somewhat too complex and doesn't take account of how Chroma is actually splitting things into lines for us. Remove both the .line and .cl classes from Chroma's HTML which made the old conditional work again. This fixed Copy of YAML files while also reducing the amount of rendered HTML nodes. Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: Lauris BH <lauris@nix.lv>
126 lines
4.6 KiB
Go
126 lines
4.6 KiB
Go
// Copyright 2021 The Gitea Authors. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package highlight
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"code.gitea.io/gitea/modules/setting"
|
|
"code.gitea.io/gitea/modules/util"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"gopkg.in/ini.v1"
|
|
)
|
|
|
|
func TestFile(t *testing.T) {
|
|
setting.Cfg = ini.Empty()
|
|
tests := []struct {
|
|
name string
|
|
numLines int
|
|
fileName string
|
|
code string
|
|
want string
|
|
}{
|
|
{
|
|
name: ".drone.yml",
|
|
numLines: 12,
|
|
fileName: ".drone.yml",
|
|
code: util.Dedent(`
|
|
kind: pipeline
|
|
name: default
|
|
|
|
steps:
|
|
- name: test
|
|
image: golang:1.13
|
|
environment:
|
|
GOPROXY: https://goproxy.cn
|
|
commands:
|
|
- go get -u
|
|
- go build -v
|
|
- go test -v -race -coverprofile=coverage.txt -covermode=atomic
|
|
`),
|
|
want: util.Dedent(`
|
|
<span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">pipeline</span><span class="w">
|
|
</span>
|
|
<span class="w"></span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">default</span><span class="w">
|
|
</span>
|
|
<span class="w">
|
|
</span>
|
|
<span class="w"></span><span class="nt">steps</span><span class="p">:</span><span class="w">
|
|
</span>
|
|
<span class="w"></span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">test</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">golang:1.13</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span><span class="nt">environment</span><span class="p">:</span><span class="w">
|
|
</span>
|
|
<span class="w"></span><span class="w"> </span><span class="nt">GOPROXY</span><span class="p">:</span><span class="w"> </span><span class="l">https://goproxy.cn</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span><span class="nt">commands</span><span class="p">:</span><span class="w">
|
|
</span>
|
|
<span class="w"></span><span class="w"> </span>- <span class="l">go get -u</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span>- <span class="l">go build -v</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span>- <span class="l">go test -v -race -coverprofile=coverage.txt -covermode=atomic</span>
|
|
`),
|
|
},
|
|
{
|
|
name: ".drone.yml - trailing space",
|
|
numLines: 13,
|
|
fileName: ".drone.yml",
|
|
code: strings.Replace(util.Dedent(`
|
|
kind: pipeline
|
|
name: default
|
|
|
|
steps:
|
|
- name: test
|
|
image: golang:1.13
|
|
environment:
|
|
GOPROXY: https://goproxy.cn
|
|
commands:
|
|
- go get -u
|
|
- go build -v
|
|
- go test -v -race -coverprofile=coverage.txt -covermode=atomic
|
|
`)+"\n", "name: default", "name: default ", 1),
|
|
want: util.Dedent(`
|
|
<span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">pipeline</span><span class="w">
|
|
</span>
|
|
<span class="w"></span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">default </span><span class="w">
|
|
</span>
|
|
<span class="w">
|
|
</span>
|
|
<span class="w"></span><span class="nt">steps</span><span class="p">:</span><span class="w">
|
|
</span>
|
|
<span class="w"></span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">test</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">golang:1.13</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span><span class="nt">environment</span><span class="p">:</span><span class="w">
|
|
</span>
|
|
<span class="w"></span><span class="w"> </span><span class="nt">GOPROXY</span><span class="p">:</span><span class="w"> </span><span class="l">https://goproxy.cn</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span><span class="nt">commands</span><span class="p">:</span><span class="w">
|
|
</span>
|
|
<span class="w"></span><span class="w"> </span>- <span class="l">go get -u</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span>- <span class="l">go build -v</span><span class="w">
|
|
</span>
|
|
<span class="w"> </span>- <span class="l">go test -v -race -coverprofile=coverage.txt -covermode=atomic</span><span class="w">
|
|
</span>
|
|
<span class="w">
|
|
</span>
|
|
`),
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := strings.Join(File(tt.numLines, tt.fileName, "", []byte(tt.code)), "\n")
|
|
assert.Equal(t, tt.want, got)
|
|
})
|
|
}
|
|
}
|