mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	* Enable punctuations ending mentions * Improve tests
This commit is contained in:
		
				
					committed by
					
						 techknowlogick
						techknowlogick
					
				
			
			
				
	
			
			
			
						parent
						
							b27cac021f
						
					
				
				
					commit
					8693e54426
				
			| @@ -26,7 +26,7 @@ var ( | ||||
| 	// TODO: fix invalid linking issue | ||||
|  | ||||
| 	// mentionPattern matches all mentions in the form of "@user" | ||||
| 	mentionPattern = regexp.MustCompile(`(?:\s|^|\(|\[)(@[0-9a-zA-Z-_\.]+)(?:\s|$|\)|\])`) | ||||
| 	mentionPattern = regexp.MustCompile(`(?:\s|^|\(|\[)(@[0-9a-zA-Z-_]+|@[0-9a-zA-Z-_][0-9a-zA-Z-_.]+[0-9a-zA-Z-_])(?:\s|[:,;.?!]\s|[:,;.?!]?$|\)|\])`) | ||||
| 	// issueNumericPattern matches string that references to a numeric issue, e.g. #1287 | ||||
| 	issueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)(#[0-9]+)(?:\s|$|\)|\]|:|\.(\s|$))`) | ||||
| 	// issueAlphanumericPattern matches string that references to an alphanumeric issue, e.g. ABC-1234 | ||||
|   | ||||
| @@ -204,14 +204,32 @@ func TestFindAllIssueReferences(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestRegExp_mentionPattern(t *testing.T) { | ||||
| 	trueTestCases := []string{ | ||||
| 		"@Unknwon", | ||||
| 		"@ANT_123", | ||||
| 		"@xxx-DiN0-z-A..uru..s-xxx", | ||||
| 		"   @lol   ", | ||||
| 		" @Te-st", | ||||
| 		"(@gitea)", | ||||
| 		"[@gitea]", | ||||
| 	trueTestCases := []struct { | ||||
| 		pat string | ||||
| 		exp string | ||||
| 	}{ | ||||
| 		{"@Unknwon", "@Unknwon"}, | ||||
| 		{"@ANT_123", "@ANT_123"}, | ||||
| 		{"@xxx-DiN0-z-A..uru..s-xxx", "@xxx-DiN0-z-A..uru..s-xxx"}, | ||||
| 		{"   @lol   ", "@lol"}, | ||||
| 		{" @Te-st", "@Te-st"}, | ||||
| 		{"(@gitea)", "@gitea"}, | ||||
| 		{"[@gitea]", "@gitea"}, | ||||
| 		{"@gitea! this", "@gitea"}, | ||||
| 		{"@gitea? this", "@gitea"}, | ||||
| 		{"@gitea. this", "@gitea"}, | ||||
| 		{"@gitea, this", "@gitea"}, | ||||
| 		{"@gitea; this", "@gitea"}, | ||||
| 		{"@gitea!\nthis", "@gitea"}, | ||||
| 		{"\n@gitea?\nthis", "@gitea"}, | ||||
| 		{"\t@gitea.\nthis", "@gitea"}, | ||||
| 		{"@gitea,\nthis", "@gitea"}, | ||||
| 		{"@gitea;\nthis", "@gitea"}, | ||||
| 		{"@gitea!", "@gitea"}, | ||||
| 		{"@gitea?", "@gitea"}, | ||||
| 		{"@gitea.", "@gitea"}, | ||||
| 		{"@gitea,", "@gitea"}, | ||||
| 		{"@gitea;", "@gitea"}, | ||||
| 	} | ||||
| 	falseTestCases := []string{ | ||||
| 		"@ 0", | ||||
| @@ -219,17 +237,24 @@ func TestRegExp_mentionPattern(t *testing.T) { | ||||
| 		"@", | ||||
| 		"", | ||||
| 		"ABC", | ||||
| 		"@.ABC", | ||||
| 		"/home/gitea/@gitea", | ||||
| 		"\"@gitea\"", | ||||
| 		"@@gitea", | ||||
| 		"@gitea!this", | ||||
| 		"@gitea?this", | ||||
| 		"@gitea,this", | ||||
| 		"@gitea;this", | ||||
| 	} | ||||
|  | ||||
| 	for _, testCase := range trueTestCases { | ||||
| 		res := mentionPattern.MatchString(testCase) | ||||
| 		assert.True(t, res) | ||||
| 		found := mentionPattern.FindStringSubmatch(testCase.pat) | ||||
| 		assert.Len(t, found, 2) | ||||
| 		assert.Equal(t, testCase.exp, found[1]) | ||||
| 	} | ||||
| 	for _, testCase := range falseTestCases { | ||||
| 		res := mentionPattern.MatchString(testCase) | ||||
| 		assert.False(t, res) | ||||
| 		assert.False(t, res, "[%s] should be false", testCase) | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user