@@ -248,16 +248,36 @@ func TestCLI_BumpAutoCmd_PromotePreReleaseWithPreserveMeta(t *testing.T) {
248248 }
249249}
250250
251+ // mockBumper is a VersionBumper for testing that returns configurable results.
252+ type mockBumper struct {
253+ bumpNextErr error
254+ bumpByLabelErr error
255+ }
256+
257+ func (m mockBumper ) BumpNext (v semver.SemVersion ) (semver.SemVersion , error ) {
258+ if m .bumpNextErr != nil {
259+ return semver.SemVersion {}, m .bumpNextErr
260+ }
261+ return semver .BumpNext (v )
262+ }
263+
264+ func (m mockBumper ) BumpByLabel (v semver.SemVersion , label string ) (semver.SemVersion , error ) {
265+ if m .bumpByLabelErr != nil {
266+ return semver.SemVersion {}, m .bumpByLabelErr
267+ }
268+ return semver .BumpByLabel (v , label )
269+ }
270+
251271func TestCLI_BumpAutoCmd_InferredBumpFails (t * testing.T ) {
252272 tmp := t .TempDir ()
253273 versionPath := testutils .WriteTempVersionFile (t , tmp , "1.2.3" )
254274
255- originalBumpByLabel := semver . BumpByLabelFunc
275+ originalBumperFactory := newVersionBumper
256276 originalInferFunc := tryInferBumpTypeFromCommitParserPluginFn
257277
258- // Force BumpByLabelFunc to fail
259- semver . BumpByLabelFunc = func (v semver. SemVersion , label string ) ( semver.SemVersion , error ) {
260- return semver. SemVersion {}, fmt .Errorf ("forced inferred bump failure" )
278+ // Force BumpByLabel to fail via mock bumper
279+ newVersionBumper = func () semver.VersionBumper {
280+ return mockBumper { bumpByLabelErr : fmt .Errorf ("forced inferred bump failure" )}
261281 }
262282
263283 // Force inference to return something
@@ -266,7 +286,7 @@ func TestCLI_BumpAutoCmd_InferredBumpFails(t *testing.T) {
266286 }
267287
268288 t .Cleanup (func () {
269- semver . BumpByLabelFunc = originalBumpByLabel
289+ newVersionBumper = originalBumperFactory
270290 tryInferBumpTypeFromCommitParserPluginFn = originalInferFunc
271291 })
272292
@@ -435,12 +455,12 @@ func TestCLI_BumpAutoCmd_BumpNextFails(t *testing.T) {
435455 tmp := t .TempDir ()
436456 versionPath := testutils .WriteTempVersionFile (t , tmp , "1.2.3" )
437457
438- original := semver . BumpNextFunc
439- semver . BumpNextFunc = func (v semver. SemVersion ) ( semver.SemVersion , error ) {
440- return semver. SemVersion {}, fmt .Errorf ("forced BumpNext failure" )
458+ originalBumperFactory := newVersionBumper
459+ newVersionBumper = func () semver.VersionBumper {
460+ return mockBumper { bumpNextErr : fmt .Errorf ("forced BumpNext failure" )}
441461 }
442462 t .Cleanup (func () {
443- semver . BumpNextFunc = original
463+ newVersionBumper = originalBumperFactory
444464 })
445465
446466 // Prepare and run the CLI command
@@ -524,12 +544,12 @@ func TestCLI_BumpAutoCmd_BumpByLabelFails(t *testing.T) {
524544 tmp := t .TempDir ()
525545 versionPath := testutils .WriteTempVersionFile (t , tmp , "1.2.3" )
526546
527- original := semver . BumpByLabelFunc
528- semver . BumpByLabelFunc = func (v semver. SemVersion , label string ) ( semver.SemVersion , error ) {
529- return semver. SemVersion {}, fmt .Errorf ("boom" )
547+ originalBumperFactory := newVersionBumper
548+ newVersionBumper = func () semver.VersionBumper {
549+ return mockBumper { bumpByLabelErr : fmt .Errorf ("boom" )}
530550 }
531551 t .Cleanup (func () {
532- semver . BumpByLabelFunc = original
552+ newVersionBumper = originalBumperFactory
533553 })
534554
535555 // Prepare and run the CLI command
@@ -652,7 +672,8 @@ func TestGetNextVersion(t *testing.T) {
652672 for _ , tt := range tests {
653673 t .Run (tt .name , func (t * testing.T ) {
654674 registry := plugins .NewPluginRegistry ()
655- result , err := getNextVersion (registry , tt .current , tt .label , tt .disableInfer , "" , "" , false )
675+ bumper := semver .NewDefaultBumper ()
676+ result , err := getNextVersion (bumper , registry , tt .current , tt .label , tt .disableInfer , "" , "" , false )
656677 if tt .expectError {
657678 if err == nil {
658679 t .Error ("expected error, got nil" )
0 commit comments