@@ -11,7 +11,6 @@ import (
1111
1212 "github.com/indaco/sley/internal/config"
1313 "github.com/indaco/sley/internal/plugins"
14- "github.com/indaco/sley/internal/plugins/commitparser"
1514 "github.com/indaco/sley/internal/plugins/commitparser/gitlog"
1615 "github.com/indaco/sley/internal/plugins/tagmanager"
1716 "github.com/indaco/sley/internal/semver"
@@ -308,21 +307,20 @@ func TestTryInferBumpTypeFromCommitParserPlugin_GetCommitsError(t *testing.T) {
308307 testutils .WithMock (func () {
309308 // Mock GetCommits to fail
310309 originalGetCommits := gitlog .GetCommitsFn
311- originalParser := commitparser .GetCommitParserFn
312310
313311 gitlog .GetCommitsFn = func (since , until string ) ([]string , error ) {
314312 return nil , fmt .Errorf ("simulated gitlog error" )
315313 }
316- commitparser .GetCommitParserFn = func () commitparser.CommitParser {
317- return testutils.MockCommitParser {} // Return any parser
318- }
319314
320315 t .Cleanup (func () {
321316 gitlog .GetCommitsFn = originalGetCommits
322- commitparser .GetCommitParserFn = originalParser
323317 })
324318 }, func () {
325319 registry := plugins .NewPluginRegistry ()
320+ parser := testutils.MockCommitParser {}
321+ if err := registry .RegisterCommitParser (& parser ); err != nil {
322+ t .Fatalf ("failed to register parser: %v" , err )
323+ }
326324 label := tryInferBumpTypeFromCommitParserPlugin (registry , "" , "" )
327325 if label != "" {
328326 t .Errorf ("expected empty label on gitlog error, got %q" , label )
@@ -337,12 +335,13 @@ func TestTryInferBumpTypeFromCommitParserPlugin_ParserError(t *testing.T) {
337335 gitlog .GetCommitsFn = func (since , until string ) ([]string , error ) {
338336 return []string {"fix: something" }, nil
339337 }
340- commitparser .GetCommitParserFn = func () commitparser.CommitParser {
341- return testutils.MockCommitParser {Err : fmt .Errorf ("parser error" )}
342- }
343338 },
344339 func () {
345340 registry := plugins .NewPluginRegistry ()
341+ parser := testutils.MockCommitParser {Err : fmt .Errorf ("parser error" )}
342+ if err := registry .RegisterCommitParser (& parser ); err != nil {
343+ t .Fatalf ("failed to register parser: %v" , err )
344+ }
346345 label := tryInferBumpTypeFromCommitParserPlugin (registry , "" , "" )
347346 if label != "" {
348347 t .Errorf ("expected empty label on parser error, got %q" , label )
@@ -695,56 +694,36 @@ func TestGetNextVersion(t *testing.T) {
695694/* ------------------------------------------------------------------------- */
696695
697696func TestBumpAuto_CallsCreateTagAfterBump_WithEnabledTagManager (t * testing.T ) {
698- // This test verifies that createTagAfterBump is called when tag manager is enabled
699- // by testing the function directly with the "auto" bump type parameter
700697 version := semver.SemVersion {Major : 99 , Minor : 88 , Patch : 77 }
701698
702- // Save original function and restore after test
703- origGetTagManagerFn := tagmanager .GetTagManagerFn
704- defer func () { tagmanager .GetTagManagerFn = origGetTagManagerFn }()
705-
706699 // Create an enabled tag manager plugin
707700 plugin := tagmanager .NewTagManager (& tagmanager.Config {
708701 Enabled : true ,
709702 AutoCreate : true ,
710703 Prefix : "v" ,
711704 Annotate : true ,
712705 })
713- tagmanager .GetTagManagerFn = func () tagmanager.TagManager { return plugin }
714706
715707 registry := plugins .NewPluginRegistry ()
708+ if err := registry .RegisterTagManager (plugin ); err != nil {
709+ t .Fatalf ("failed to register tag manager: %v" , err )
710+ }
716711
717- // Call createTagAfterBump directly with "auto" bump type
718- // This is the call that runSingleModuleAuto makes at the end
719712 err := createTagAfterBump (registry , version , "auto" )
720713
721- // The test environment may have various outcomes depending on git state
722- // The important thing is that the function is called and attempts tag creation
723714 if err != nil {
724715 errStr := err .Error ()
725- // These are acceptable errors when running in a test environment
726- if ! strings .Contains (errStr , "failed to create tag" ) && ! strings .Contains (errStr , "already exists" ) {
727- t .Fatalf ("expected tag creation error, tag exists error, or no error, got: %v" , err )
716+ if ! strings .Contains (errStr , "failed to create tag" ) && ! strings .Contains (errStr , "already exists" ) && ! strings .Contains (errStr , "failed to commit" ) {
717+ t .Fatalf ("expected tag creation error, tag exists error, commit error, or no error, got: %v" , err )
728718 }
729719 }
730720}
731721
732722func TestBumpAuto_EndToEnd_WithMockTagManager (t * testing.T ) {
733- // This test verifies the full bump auto flow with a mock tag manager
734- // that tracks whether CreateTag is called
735723 tmpDir := t .TempDir ()
736724 versionPath := filepath .Join (tmpDir , ".version" )
737725 testutils .WriteTempVersionFile (t , tmpDir , "1.2.3" )
738726
739- // Save original function and restore after test
740- origGetTagManagerFn := tagmanager .GetTagManagerFn
741- defer func () { tagmanager .GetTagManagerFn = origGetTagManagerFn }()
742-
743- // Create a mock that tracks calls - note: createTagAfterBump uses type assertion
744- // to *tagmanager.TagManagerPlugin, so mocks will be treated as disabled
745- // We use this to verify the flow works when tag manager returns nil for registry
746- tagmanager .GetTagManagerFn = func () tagmanager.TagManager { return nil }
747-
748727 cfg := & config.Config {Path : versionPath }
749728 registry := plugins .NewPluginRegistry ()
750729 appCli := testutils .BuildCLIForTests (cfg .Path , []* cli.Command {Run (cfg , registry )})
@@ -757,7 +736,6 @@ func TestBumpAuto_EndToEnd_WithMockTagManager(t *testing.T) {
757736 t .Fatalf ("expected no error, got: %v" , err )
758737 }
759738
760- // Verify the version was bumped
761739 got := testutils .ReadTempVersionFile (t , tmpDir )
762740 want := "1.2.4"
763741 if got != want {
@@ -770,16 +748,10 @@ func TestBumpAuto_SkipsTagCreation_WhenTagManagerDisabled(t *testing.T) {
770748 versionPath := filepath .Join (tmpDir , ".version" )
771749 testutils .WriteTempVersionFile (t , tmpDir , "1.2.3" )
772750
773- // Save original function and restore after test
774- origGetTagManagerFn := tagmanager .GetTagManagerFn
775- defer func () { tagmanager .GetTagManagerFn = origGetTagManagerFn }()
776-
777- // Create a disabled tag manager plugin
778751 plugin := tagmanager .NewTagManager (& tagmanager.Config {
779752 Enabled : false ,
780753 AutoCreate : false ,
781754 })
782- tagmanager .GetTagManagerFn = func () tagmanager.TagManager { return plugin }
783755
784756 cfg := & config.Config {Path : versionPath }
785757 registry := plugins .NewPluginRegistry ()
@@ -808,13 +780,6 @@ func TestBumpAuto_SkipsTagCreation_WhenNoTagManagerRegistered(t *testing.T) {
808780 versionPath := filepath .Join (tmpDir , ".version" )
809781 testutils .WriteTempVersionFile (t , tmpDir , "1.2.3-alpha.1" )
810782
811- // Save original function and restore after test
812- origGetTagManagerFn := tagmanager .GetTagManagerFn
813- defer func () { tagmanager .GetTagManagerFn = origGetTagManagerFn }()
814-
815- // No tag manager registered
816- tagmanager .GetTagManagerFn = func () tagmanager.TagManager { return nil }
817-
818783 cfg := & config.Config {Path : versionPath }
819784 registry := plugins .NewPluginRegistry ()
820785 appCli := testutils .BuildCLIForTests (cfg .Path , []* cli.Command {Run (cfg , registry )})
@@ -838,35 +803,24 @@ func TestBumpAuto_TagCreatedWithCorrectParameters(t *testing.T) {
838803 version := semver.SemVersion {Major : 1 , Minor : 2 , Patch : 4 }
839804
840805 t .Run ("calls createTagAfterBump with auto bump type" , func (t * testing.T ) {
841- // Save original and restore after test
842- origGetTagManagerFn := tagmanager .GetTagManagerFn
843- defer func () { tagmanager .GetTagManagerFn = origGetTagManagerFn }()
844-
845- // Create enabled tag manager
846806 plugin := tagmanager .NewTagManager (& tagmanager.Config {
847807 Enabled : true ,
848808 AutoCreate : true ,
849809 Prefix : "v" ,
850810 })
851- tagmanager .GetTagManagerFn = func () tagmanager.TagManager { return plugin }
852811
853812 registry := plugins .NewPluginRegistry ()
854- // Note: createTagAfterBump checks for *TagManagerPlugin type assertion
855- // When using a real plugin, it will try to create a tag (which fails without git)
813+ if err := registry .RegisterTagManager (plugin ); err != nil {
814+ t .Fatalf ("failed to register tag manager: %v" , err )
815+ }
856816 err := createTagAfterBump (registry , version , "auto" )
857817
858- // In test environment without git, we expect a tag creation error
859- if err != nil && ! strings .Contains (err .Error (), "failed to create tag" ) {
818+ if err != nil && ! strings .Contains (err .Error (), "failed to create tag" ) && ! strings .Contains (err .Error (), "failed to commit" ) {
860819 t .Errorf ("unexpected error type: %v" , err )
861820 }
862821 })
863822
864823 t .Run ("returns nil when tag manager is nil" , func (t * testing.T ) {
865- origGetTagManagerFn := tagmanager .GetTagManagerFn
866- defer func () { tagmanager .GetTagManagerFn = origGetTagManagerFn }()
867-
868- tagmanager .GetTagManagerFn = func () tagmanager.TagManager { return nil }
869-
870824 registry := plugins .NewPluginRegistry ()
871825 err := createTagAfterBump (registry , version , "auto" )
872826 if err != nil {
@@ -875,16 +829,15 @@ func TestBumpAuto_TagCreatedWithCorrectParameters(t *testing.T) {
875829 })
876830
877831 t .Run ("returns nil when tag manager is disabled" , func (t * testing.T ) {
878- origGetTagManagerFn := tagmanager .GetTagManagerFn
879- defer func () { tagmanager .GetTagManagerFn = origGetTagManagerFn }()
880-
881832 plugin := tagmanager .NewTagManager (& tagmanager.Config {
882833 Enabled : false ,
883834 AutoCreate : false ,
884835 })
885- tagmanager .GetTagManagerFn = func () tagmanager.TagManager { return plugin }
886836
887837 registry := plugins .NewPluginRegistry ()
838+ if err := registry .RegisterTagManager (plugin ); err != nil {
839+ t .Fatalf ("failed to register tag manager: %v" , err )
840+ }
888841 err := createTagAfterBump (registry , version , "auto" )
889842 if err != nil {
890843 t .Errorf ("expected nil error when tag manager is disabled, got: %v" , err )
@@ -897,19 +850,16 @@ func TestBumpAuto_TagCreation_OnPreReleasePromotion(t *testing.T) {
897850 versionPath := filepath .Join (tmpDir , ".version" )
898851 testutils .WriteTempVersionFile (t , tmpDir , "2.0.0-rc.1" )
899852
900- // Save original function and restore after test
901- origGetTagManagerFn := tagmanager .GetTagManagerFn
902- defer func () { tagmanager .GetTagManagerFn = origGetTagManagerFn }()
903-
904- // Create a disabled tag manager to verify bump succeeds without tag creation
905853 plugin := tagmanager .NewTagManager (& tagmanager.Config {
906854 Enabled : false ,
907855 AutoCreate : false ,
908856 })
909- tagmanager .GetTagManagerFn = func () tagmanager.TagManager { return plugin }
910857
911858 cfg := & config.Config {Path : versionPath }
912859 registry := plugins .NewPluginRegistry ()
860+ if err := registry .RegisterTagManager (plugin ); err != nil {
861+ t .Fatalf ("failed to register tag manager: %v" , err )
862+ }
913863 appCli := testutils .BuildCLIForTests (cfg .Path , []* cli.Command {Run (cfg , registry )})
914864
915865 err := appCli .Run (context .Background (), []string {
@@ -932,28 +882,25 @@ func TestBumpAuto_InferredMinorBump_WithTagManager(t *testing.T) {
932882 versionPath := filepath .Join (tmpDir , ".version" )
933883 testutils .WriteTempVersionFile (t , tmpDir , "1.0.0" )
934884
935- // Save and restore original functions
936- origGetTagManagerFn := tagmanager .GetTagManagerFn
937885 originalInfer := tryInferBumpTypeFromCommitParserPluginFn
938886 defer func () {
939- tagmanager .GetTagManagerFn = origGetTagManagerFn
940887 tryInferBumpTypeFromCommitParserPluginFn = originalInfer
941888 }()
942889
943- // Mock inference to return "minor"
944890 tryInferBumpTypeFromCommitParserPluginFn = func (registry * plugins.PluginRegistry , since , until string ) string {
945891 return "minor"
946892 }
947893
948- // Create a disabled tag manager (to avoid git dependency in tests)
949894 plugin := tagmanager .NewTagManager (& tagmanager.Config {
950895 Enabled : false ,
951896 AutoCreate : false ,
952897 })
953- tagmanager .GetTagManagerFn = func () tagmanager.TagManager { return plugin }
954898
955899 cfg := & config.Config {Path : versionPath , Plugins : & config.PluginConfig {CommitParser : true }}
956900 registry := plugins .NewPluginRegistry ()
901+ if err := registry .RegisterTagManager (plugin ); err != nil {
902+ t .Fatalf ("failed to register tag manager: %v" , err )
903+ }
957904 appCli := testutils .BuildCLIForTests (cfg .Path , []* cli.Command {Run (cfg , registry )})
958905
959906 err := appCli .Run (context .Background (), []string {
0 commit comments