Skip to content

Commit 0a6da55

Browse files
bgn42Copilot
andauthored
Issue #541, showing wrong error info fixed (#542)
## Fixes #541 ## Changes depending on the version modifier an error or info is shown. For installations with "any version" only an info is shown with viersion(s) which are installed ## Checklist <!-- Put an `x` in the boxes. All tasks must be completed and boxes checked before merging. --> - [x] 🤖 This change is covered by unit tests (if applicable). - [x] 🤹 Manual testing has been performed (if necessary). - [x] 🛡️ Security impacts have been considered (if relevant). - [x] 📖 Documentation updates are complete (if required). - [x] 🧠 Third-party dependencies and TPIP updated (if required). --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 4b61887 commit 0a6da55

File tree

3 files changed

+79
-18
lines changed

3 files changed

+79
-18
lines changed

cmd/installer/root.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,18 @@ func AddPack(packPath string, checkEula, extractEula, forceReinstall, noRequirem
153153
log.Debugf("Moved pack to temporary path \"%s\"", backupPackPath)
154154
dropPreInstalled = true
155155
} else {
156-
log.Errorf("Pack \"%s@%s\" is already installed here: \"%s\", use the --force-reinstall (-F) flag to force installation",
157-
packPath, pack.targetVersion, filepath.Join(Installation.PackRoot, pack.Vendor, pack.Name, pack.GetVersionNoMeta()))
156+
if pack.versionModifier == utils.AnyVersion {
157+
if len(pack.installedVersions) > 1 {
158+
log.Infof("Pack \"%s\" is already installed here: \"%s\", versions: %s",
159+
packPath, filepath.Join(Installation.PackRoot, pack.Vendor, pack.Name), utils.VersionList(pack.installedVersions))
160+
} else {
161+
log.Infof("Pack \"%s\" is already installed here: \"%s\"",
162+
packPath, filepath.Join(Installation.PackRoot, pack.Vendor, pack.Name, pack.installedVersions[0]))
163+
}
164+
} else {
165+
log.Errorf("Pack \"%s@%s\" is already installed here: \"%s\", use the --force-reinstall (-F) flag to force installation",
166+
packPath, pack.targetVersion, filepath.Join(Installation.PackRoot, pack.Vendor, pack.Name, pack.GetVersionNoMeta()))
167+
}
158168
return nil
159169
}
160170
}

cmd/utils/semver.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,18 @@ func SemverStripMeta(version string) string {
7676
}
7777
return version
7878
}
79+
80+
// VersionList takes a slice of version strings, strips any semantic version metadata
81+
// from each version using SemverStripMeta, and returns a single comma-separated string
82+
// of the processed versions. Empty strings in the input slice are ignored.
83+
// If the input slice is empty, it returns an empty string.
84+
func VersionList(versions []string) string {
85+
var processedVersions []string
86+
for _, version := range versions {
87+
ver := SemverStripMeta(version)
88+
if ver != "" {
89+
processedVersions = append(processedVersions, ver)
90+
}
91+
}
92+
return strings.Join(processedVersions, ", ")
93+
}

cmd/utils/semver_test.go

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,27 @@ func TestSemverCompare(t *testing.T) {
5555

5656
}
5757

58+
func TestSemverCompareRange(t *testing.T) {
59+
assert := assert.New(t)
60+
61+
t.Run("test version range compare", func(t *testing.T) {
62+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3") == 0)
63+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3:") == 0)
64+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3:_") == 0)
65+
assert.True(utils.SemverCompareRange("1.2.3", ":1.2.3") == 0)
66+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3:1.2.3") == 0)
67+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.0:1.2.3") == 0)
68+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3:1.2.4") == 0)
69+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.0:1.2.4") == 0)
70+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.0") == 0)
71+
assert.True(utils.SemverCompareRange("1.2.3", ":1.2.4") == 0)
72+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.4") < 0)
73+
assert.True(utils.SemverCompareRange("1.2.3", ":1.2.0") > 0)
74+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.4:1.2.5") < 0)
75+
assert.True(utils.SemverCompareRange("1.2.3", "1.2.0:1.2.1") > 0)
76+
})
77+
}
78+
5879
func TestSemverMajor(t *testing.T) {
5980
assert := assert.New(t)
6081

@@ -99,23 +120,38 @@ func TestSemverStripMeta(t *testing.T) {
99120
})
100121
}
101122

102-
func TestSemverCompareRange(t *testing.T) {
123+
func TestVersionList(t *testing.T) {
103124
assert := assert.New(t)
104125

105-
t.Run("test version range compare", func(t *testing.T) {
106-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3") == 0)
107-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3:") == 0)
108-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3:_") == 0)
109-
assert.True(utils.SemverCompareRange("1.2.3", ":1.2.3") == 0)
110-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3:1.2.3") == 0)
111-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.0:1.2.3") == 0)
112-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.3:1.2.4") == 0)
113-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.0:1.2.4") == 0)
114-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.0") == 0)
115-
assert.True(utils.SemverCompareRange("1.2.3", ":1.2.4") == 0)
116-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.4") < 0)
117-
assert.True(utils.SemverCompareRange("1.2.3", ":1.2.0") > 0)
118-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.4:1.2.5") < 0)
119-
assert.True(utils.SemverCompareRange("1.2.3", "1.2.0:1.2.1") > 0)
126+
t.Run("empty slice", func(t *testing.T) {
127+
assert.Equal("", utils.VersionList([]string{}))
128+
})
129+
130+
t.Run("single version, no meta", func(t *testing.T) {
131+
assert.Equal("1.2.3", utils.VersionList([]string{"1.2.3"}))
132+
})
133+
134+
t.Run("single version, with meta", func(t *testing.T) {
135+
assert.Equal("1.2.3", utils.VersionList([]string{"1.2.3+meta"}))
136+
})
137+
138+
t.Run("multiple versions, no meta", func(t *testing.T) {
139+
assert.Equal("1.2.3, 2.3.4, 3.4.5", utils.VersionList([]string{"1.2.3", "2.3.4", "3.4.5"}))
140+
})
141+
142+
t.Run("multiple versions, some with meta", func(t *testing.T) {
143+
assert.Equal("1.2.3, 2.3.4, 3.4.5", utils.VersionList([]string{"1.2.3+meta", "2.3.4", "3.4.5+build"}))
144+
})
145+
146+
t.Run("multiple versions, all with meta", func(t *testing.T) {
147+
assert.Equal("1.2.3, 2.3.4, 3.4.5", utils.VersionList([]string{"1.2.3+meta", "2.3.4+build", "3.4.5+test"}))
148+
})
149+
150+
t.Run("versions with empty string", func(t *testing.T) {
151+
assert.Equal("1.2.3", utils.VersionList([]string{"", "1.2.3"}))
152+
})
153+
154+
t.Run("versions with empty strings in between", func(t *testing.T) {
155+
assert.Equal("1.2.3, 2.3.4, 3.4.5", utils.VersionList([]string{"1.2.3", "", "2.3.4", "", "3.4.5"}))
120156
})
121157
}

0 commit comments

Comments
 (0)