mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 00:11:04 +00:00 
			
		
		
		
	It will determine how anchors are created and will break existing links otherwise. Adapted from Revert "Make `user-content-* ` consistent with github (#26388) (cherry picked from commit1666fba8f5) (cherry picked from commit48f38280e8) (cherry picked from commit03adb3a2b4) (cherry picked from commita0ad36f0ad) (cherry picked from commit3aac990064)
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2023 The Gitea Authors. All rights reserved.
 | 
						||
// Copyright 2023 The Forgejo Authors. All rights reserved.
 | 
						||
// SPDX-License-Identifier: MIT
 | 
						||
package common
 | 
						||
 | 
						||
import (
 | 
						||
	"testing"
 | 
						||
 | 
						||
	"github.com/stretchr/testify/assert"
 | 
						||
)
 | 
						||
 | 
						||
func TestCleanValue(t *testing.T) {
 | 
						||
	tests := []struct {
 | 
						||
		param  string
 | 
						||
		expect string
 | 
						||
	}{
 | 
						||
		// Github behavior test cases
 | 
						||
		{"", ""},
 | 
						||
		{"test.0.1", "test-0-1"},
 | 
						||
		{"test(0)", "test-0"},
 | 
						||
		{"test!1", "test-1"},
 | 
						||
		{"test:2", "test-2"},
 | 
						||
		{"test*3", "test-3"},
 | 
						||
		{"test!4", "test-4"},
 | 
						||
		{"test:5", "test-5"},
 | 
						||
		{"test*6", "test-6"},
 | 
						||
		{"test:6 a", "test-6-a"},
 | 
						||
		{"test:6 !b", "test-6-b"},
 | 
						||
		{"test:ad # df", "test-ad-df"},
 | 
						||
		{"test:ad #23 df 2*/*", "test-ad-23-df-2"},
 | 
						||
		{"test:ad 23 df 2*/*", "test-ad-23-df-2"},
 | 
						||
		{"test:ad # 23 df 2*/*", "test-ad-23-df-2"},
 | 
						||
		{"Anchors in Markdown", "anchors-in-markdown"},
 | 
						||
		{"a_b_c", "a_b_c"},
 | 
						||
		{"a-b-c", "a-b-c"},
 | 
						||
		{"a-b-c----", "a-b-c"},
 | 
						||
		{"test:6a", "test-6a"},
 | 
						||
		{"test:a6", "test-a6"},
 | 
						||
		{"tes a a   a  a", "tes-a-a-a-a"},
 | 
						||
		{"  tes a a   a  a  ", "tes-a-a-a-a"},
 | 
						||
		{"Header with \"double quotes\"", "header-with-double-quotes"},
 | 
						||
		{"Placeholder to force scrolling on link's click", "placeholder-to-force-scrolling-on-link-s-click"},
 | 
						||
		{"tes()", "tes"},
 | 
						||
		{"tes(0)", "tes-0"},
 | 
						||
		{"tes{0}", "tes-0"},
 | 
						||
		{"tes[0]", "tes-0"},
 | 
						||
		{"test【0】", "test-0"},
 | 
						||
		{"tes…@a", "tes-a"},
 | 
						||
		{"tes¥& a", "tes-a"},
 | 
						||
		{"tes= a", "tes-a"},
 | 
						||
		{"tes|a", "tes-a"},
 | 
						||
		{"tes\\a", "tes-a"},
 | 
						||
		{"tes/a", "tes-a"},
 | 
						||
		{"a啊啊b", "a啊啊b"},
 | 
						||
		{"c🤔️🤔️d", "c-d"},
 | 
						||
		{"a⚡a", "a-a"},
 | 
						||
		{"e.~f", "e-f"},
 | 
						||
	}
 | 
						||
	for _, test := range tests {
 | 
						||
		assert.Equal(t, []byte(test.expect), CleanValue([]byte(test.param)), test.param)
 | 
						||
	}
 | 
						||
}
 |