@@ -770,4 +770,105 @@ suite('TerminalCompletionService', () => {
770
770
} ) ;
771
771
772
772
} ) ;
773
+
774
+ suite ( 'Provider Configuration' , ( ) => {
775
+ // Test class that extends TerminalCompletionService to access protected methods
776
+ class TestTerminalCompletionService extends TerminalCompletionService {
777
+ public _getEnabledProviders ( providers : ITerminalCompletionProvider [ ] ) : ITerminalCompletionProvider [ ] {
778
+ return super . _getEnabledProviders ( providers ) ;
779
+ }
780
+ }
781
+
782
+ let testTerminalCompletionService : TestTerminalCompletionService ;
783
+
784
+ setup ( ( ) => {
785
+ testTerminalCompletionService = store . add ( instantiationService . createInstance ( TestTerminalCompletionService ) ) ;
786
+ } ) ;
787
+
788
+ // Mock provider for testing
789
+ function createMockProvider ( id : string ) : ITerminalCompletionProvider {
790
+ return {
791
+ id,
792
+ provideCompletions : async ( ) => [ {
793
+ label : `completion-from-${ id } ` ,
794
+ kind : TerminalCompletionItemKind . Method ,
795
+ replacementIndex : 0 ,
796
+ replacementLength : 0
797
+ } ]
798
+ } ;
799
+ }
800
+
801
+ test ( 'should enable providers by default when no configuration exists' , ( ) => {
802
+ const defaultProvider = createMockProvider ( 'terminal-suggest' ) ;
803
+ const newProvider = createMockProvider ( 'new-extension-provider' ) ;
804
+ const providers = [ defaultProvider , newProvider ] ;
805
+
806
+ // Set empty configuration (no provider keys)
807
+ configurationService . setUserConfiguration ( TerminalSuggestSettingId . Providers , { } ) ;
808
+
809
+ const result = testTerminalCompletionService . _getEnabledProviders ( providers ) ;
810
+
811
+ // Both providers should be enabled since they're not explicitly disabled
812
+ assert . strictEqual ( result . length , 2 , 'Should enable both providers by default' ) ;
813
+ assert . ok ( result . includes ( defaultProvider ) , 'Should include default provider' ) ;
814
+ assert . ok ( result . includes ( newProvider ) , 'Should include new provider' ) ;
815
+ } ) ;
816
+
817
+ test ( 'should disable providers when explicitly set to false' , ( ) => {
818
+ const provider1 = createMockProvider ( 'provider1' ) ;
819
+ const provider2 = createMockProvider ( 'provider2' ) ;
820
+ const providers = [ provider1 , provider2 ] ;
821
+
822
+ // Disable provider1, leave provider2 unconfigured
823
+ configurationService . setUserConfiguration ( TerminalSuggestSettingId . Providers , {
824
+ 'provider1' : false
825
+ } ) ;
826
+
827
+ const result = testTerminalCompletionService . _getEnabledProviders ( providers ) ;
828
+
829
+ // Only provider2 should be enabled
830
+ assert . strictEqual ( result . length , 1 , 'Should enable only one provider' ) ;
831
+ assert . ok ( result . includes ( provider2 ) , 'Should include unconfigured provider' ) ;
832
+ assert . ok ( ! result . includes ( provider1 ) , 'Should not include disabled provider' ) ;
833
+ } ) ;
834
+
835
+ test ( 'should enable providers when explicitly set to true' , ( ) => {
836
+ const provider1 = createMockProvider ( 'provider1' ) ;
837
+ const provider2 = createMockProvider ( 'provider2' ) ;
838
+ const providers = [ provider1 , provider2 ] ;
839
+
840
+ // Explicitly enable provider1, leave provider2 unconfigured
841
+ configurationService . setUserConfiguration ( TerminalSuggestSettingId . Providers , {
842
+ 'provider1' : true
843
+ } ) ;
844
+
845
+ const result = testTerminalCompletionService . _getEnabledProviders ( providers ) ;
846
+
847
+ // Both providers should be enabled
848
+ assert . strictEqual ( result . length , 2 , 'Should enable both providers' ) ;
849
+ assert . ok ( result . includes ( provider1 ) , 'Should include explicitly enabled provider' ) ;
850
+ assert . ok ( result . includes ( provider2 ) , 'Should include unconfigured provider' ) ;
851
+ } ) ;
852
+
853
+ test ( 'should handle mixed configuration correctly' , ( ) => {
854
+ const provider1 = createMockProvider ( 'provider1' ) ;
855
+ const provider2 = createMockProvider ( 'provider2' ) ;
856
+ const provider3 = createMockProvider ( 'provider3' ) ;
857
+ const providers = [ provider1 , provider2 , provider3 ] ;
858
+
859
+ // Mixed configuration: enable provider1, disable provider2, leave provider3 unconfigured
860
+ configurationService . setUserConfiguration ( TerminalSuggestSettingId . Providers , {
861
+ 'provider1' : true ,
862
+ 'provider2' : false
863
+ } ) ;
864
+
865
+ const result = testTerminalCompletionService . _getEnabledProviders ( providers ) ;
866
+
867
+ // provider1 and provider3 should be enabled, provider2 should be disabled
868
+ assert . strictEqual ( result . length , 2 , 'Should enable two providers' ) ;
869
+ assert . ok ( result . includes ( provider1 ) , 'Should include explicitly enabled provider' ) ;
870
+ assert . ok ( result . includes ( provider3 ) , 'Should include unconfigured provider' ) ;
871
+ assert . ok ( ! result . includes ( provider2 ) , 'Should not include disabled provider' ) ;
872
+ } ) ;
873
+ } ) ;
773
874
} ) ;
0 commit comments