MCPcopy Create free account
hub / github.com/github/gh-aw / TestMajorVersionPreference

Function TestMajorVersionPreference

pkg/cli/update_actions_test.go:238–332  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

236}
237
238func TestMajorVersionPreference(t *testing.T) {
239 // Test that the version selection logic prefers major-only versions (v8)
240 // over full semantic versions (v8.0.0) when they are semantically equal.
241 // This follows GitHub Actions best practice of using major version tags.
242
243 tests := []struct {
244 name string
245 releases []string
246 currentVersion string
247 allowMajor bool
248 expectedVersion string
249 expectedPreferred string // The version that should be preferred (v8 over v8.0.0.0)
250 }{
251 {
252 name: "prefer v8 over v8.0.0",
253 releases: []string{"v8.0.0", "v8", "v7.0.0"},
254 currentVersion: "v8",
255 allowMajor: false,
256 expectedVersion: "v8",
257 expectedPreferred: "v8",
258 },
259 {
260 name: "prefer v6 over v6.0.0",
261 releases: []string{"v6.0.0", "v6", "v5.0.0"},
262 currentVersion: "v6",
263 allowMajor: false,
264 expectedVersion: "v6",
265 expectedPreferred: "v6",
266 },
267 {
268 name: "prefer v8 over v8.0.0.0 (four-part version)",
269 releases: []string{"v8.0.0.0", "v8"},
270 currentVersion: "v8",
271 allowMajor: false,
272 expectedVersion: "v8",
273 expectedPreferred: "v8",
274 },
275 {
276 name: "prefer newest when versions differ",
277 releases: []string{"v8.1.0", "v8.0.0", "v8"},
278 currentVersion: "v8",
279 allowMajor: false,
280 expectedVersion: "v8.1.0",
281 expectedPreferred: "v8.1.0",
282 },
283 }
284
285 for _, tt := range tests {
286 t.Run(tt.name, func(t *testing.T) {
287 currentVer := parseVersion(tt.currentVersion)
288 if currentVer == nil {
289 t.Fatalf("Failed to parse current version: %s", tt.currentVersion)
290 }
291
292 var latestCompatible string
293 var latestCompatibleVersion *semverutil.SemanticVersion
294
295 for _, release := range tt.releases {

Callers

nothing calls this directly

Calls 5

IsPreciseVersionMethod · 0.95
IsNewerMethod · 0.80
parseVersionFunction · 0.70
RunMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected