mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 08:21:11 +00:00 
			
		
		
		
	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)
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 |