Quellcode durchsuchen

Fix version diff word detection (#2124)

* Fix version diff word detection

* remove double negation

* preserve text color after tests
Tanmay Chaudhry vor 2 Jahren
Ursprung
Commit
4832ec59db
2 geänderte Dateien mit 71 neuen und 0 gelöschten Zeilen
  1. 6 0
      pkg/query/version_diff.go
  2. 65 0
      pkg/query/version_diff_test.go

+ 6 - 0
pkg/query/version_diff.go

@@ -17,6 +17,12 @@ func GetVersionDiff(oldVersion, newVersion string) (left, right string) {
 	diffPosition := 0
 
 	checkWords := func(str string, index int, words ...string) bool {
+		// Make sure the word is not part of a longer word
+		ongoingWord := unicode.IsLetter(rune(str[index]))
+		if ongoingWord {
+			return false
+		}
+
 		for _, word := range words {
 			wordLength := len(word)
 

+ 65 - 0
pkg/query/version_diff_test.go

@@ -0,0 +1,65 @@
+package query
+
+import (
+	"testing"
+
+	"github.com/Jguer/yay/v12/pkg/text"
+)
+
+func TestVersionDiff(t *testing.T) {
+	testCases := []struct {
+		name     string
+		a        string
+		b        string
+		wantDiff string
+	}{
+		{
+			name:     "1.0.0-1 -> 1.0.0-2",
+			a:        "1.0.0-1",
+			b:        "1.0.0-2",
+			wantDiff: "1.0.0-" + text.Red("1") + " " + "1.0.0-" + text.Green("2"),
+		},
+		{
+			name:     "1.0.0-1 -> 1.0.1-1",
+			a:        "1.0.0-1",
+			b:        "1.0.1-1",
+			wantDiff: "1.0." + text.Red("0-1") + " " + "1.0." + text.Green("1-1"),
+		},
+		{
+			name:     "3.0.0~alpha7-3 -> 3.0.0~alpha7-4",
+			a:        "3.0.0~alpha7-3",
+			b:        "3.0.0~alpha7-4",
+			wantDiff: "3.0.0~alpha7-" + text.Red("3") + " " + "3.0.0~alpha7-" + text.Green("4"),
+		},
+		{
+			name:     "3.0.0~beta7-3 -> 3.0.0~beta8-3",
+			a:        "3.0.0~beta7-3",
+			b:        "3.0.0~beta8-3",
+			wantDiff: "3.0.0~" + text.Red("beta7-3") + " " + "3.0.0~" + text.Green("beta8-3"),
+		},
+		{
+			name:     "23.04.r131.b1bfe05-1 -> 23.04.r131.b1bfe07-1",
+			a:        "23.04.r131.b1bfe05-1",
+			b:        "23.04.r131.b1bfe07-1",
+			wantDiff: "23.04.r131." + text.Red("b1bfe05-1") + " " + "23.04.r131." + text.Green("b1bfe07-1"),
+		},
+		{
+			name:     "1.0.arch0-1 -> 1.0.arch1-2",
+			a:        "1.0.arch0-1",
+			b:        "1.0.arch1-2",
+			wantDiff: "1.0." + text.Red("arch0-1") + " " + "1.0." + text.Green("arch1-2"),
+		},
+	}
+	for _, tc := range testCases {
+		t.Run(tc.name, func(t *testing.T) {
+			originalUseColor := text.UseColor
+			text.UseColor = true
+			left, right := GetVersionDiff(tc.a, tc.b)
+			gotDiff := left + " " + right
+			if gotDiff != tc.wantDiff {
+				t.Errorf("VersionDiff(%s, %s) = %s, want %s", tc.a, tc.b, gotDiff, tc.wantDiff)
+			}
+			text.UseColor = originalUseColor
+		})
+	}
+}