2020
2121using System . IO ;
2222using SonarLint . VisualStudio . Core ;
23- using SonarLint . VisualStudio . Core . CSharpVB ;
2423using SonarLint . VisualStudio . Core . SystemAbstractions ;
2524using SonarLint . VisualStudio . Integration . Vsix . EmbeddedAnalyzers ;
2625using SonarLint . VisualStudio . Integration . Vsix . Helpers ;
2726using SonarLint . VisualStudio . RoslynAnalyzerServer . Analysis . Configuration ;
27+ using SonarLint . VisualStudio . RoslynAnalyzerServer . Http . Models ;
2828
2929namespace SonarLint . VisualStudio . Integration . UnitTests . EmbeddedAnalyzers ;
3030
@@ -37,36 +37,27 @@ public class EmbeddedDotnetAnalyzersLocatorTests
3737 private static readonly string VbRegularAnalyzer = GetAnalyzerFullPath ( PathInsideVsix , "SonarAnalyzer.VisualBasic.dll" ) ;
3838 private static readonly string CSharpEnterpriseAnalyzer = GetAnalyzerFullPath ( PathInsideVsix , "SonarAnalyzer.Enterprise.CSharp.dll" ) ;
3939 private static readonly string VbEnterpriseAnalyzer = GetAnalyzerFullPath ( PathInsideVsix , "SonarAnalyzer.Enterprise.VisualBasic.dll" ) ;
40+ private IFileSystemService fileSystem ;
4041
4142 private EmbeddedDotnetAnalyzersLocator testSubject ;
4243 private IVsixRootLocator vsixRootLocator ;
43- private IFileSystemService fileSystem ;
44- private ILanguageProvider languageProvider ;
4544
4645 [ TestInitialize ]
4746 public void TestInitialize ( )
4847 {
4948 vsixRootLocator = Substitute . For < IVsixRootLocator > ( ) ;
50- languageProvider = Substitute . For < ILanguageProvider > ( ) ;
51- languageProvider . RoslynLanguages . Returns ( [ Language . CSharp , Language . VBNET ] ) ;
5249 fileSystem = Substitute . For < IFileSystemService > ( ) ;
53- testSubject = new EmbeddedDotnetAnalyzersLocator ( vsixRootLocator , languageProvider , fileSystem ) ;
50+ testSubject = new EmbeddedDotnetAnalyzersLocator ( vsixRootLocator , fileSystem ) ;
5451 }
5552
5653 [ TestMethod ]
57- public void MefCtor_CheckIsExported ( )
58- {
54+ public void MefCtor_CheckIsExported ( ) =>
5955 MefTestHelpers . CheckTypeCanBeImported < EmbeddedDotnetAnalyzersLocator , IEmbeddedDotnetAnalyzersLocator > (
6056 MefTestHelpers . CreateExport < IVsixRootLocator > ( ) ,
61- MefTestHelpers . CreateExport < ILanguageProvider > ( ) ,
6257 MefTestHelpers . CreateExport < IFileSystemService > ( ) ) ;
63- }
6458
6559 [ TestMethod ]
66- public void MefCtor_IsSingleton ( )
67- {
68- MefTestHelpers . CheckIsSingletonMefComponent < EmbeddedDotnetAnalyzersLocator > ( ) ;
69- }
60+ public void MefCtor_IsSingleton ( ) => MefTestHelpers . CheckIsSingletonMefComponent < EmbeddedDotnetAnalyzersLocator > ( ) ;
7061
7162 [ TestMethod ]
7263 public void GetBasicAnalyzerFullPaths_AnalyzersExists_ReturnsFullPathsToAnalyzers ( )
@@ -149,30 +140,21 @@ public void GetAnalyzerFullPaths_SearchesForFilesInsideVsix()
149140 }
150141
151142 [ TestMethod ]
152- public void GetBasicAnalyzerFullPathsByLanguage_GroupsDllsByLanguageAndFiltersEnterprise ( )
143+ public void GetAnalyzerFullPathsByLanguage_BothEnterprise_GroupsEnterpriseDllsByLanguage ( )
153144 {
154145 fileSystem . Directory . GetFiles ( Arg . Any < string > ( ) , Arg . Any < string > ( ) ) . Returns ( [
155146 CSharpRegularAnalyzer ,
156147 VbRegularAnalyzer ,
157- CSharpEnterpriseAnalyzer
148+ CSharpEnterpriseAnalyzer ,
149+ VbEnterpriseAnalyzer
158150 ] ) ;
159151
160- testSubject . GetBasicAnalyzerFullPathsByLanguage ( ) . Should ( ) . BeEquivalentTo ( new Dictionary < RoslynLanguage , List < string > >
161- {
162- [ Language . CSharp ] = [ CSharpRegularAnalyzer ] , [ Language . VBNET ] = [ VbRegularAnalyzer ]
163- } ) ;
152+ testSubject . GetAnalyzerFullPathsByLanguage ( new AnalyzerInfoDto ( true , true ) ) . Should ( ) . BeEquivalentTo (
153+ new Dictionary < RoslynLanguage , List < string > > { [ Language . CSharp ] = [ CSharpRegularAnalyzer , CSharpEnterpriseAnalyzer ] , [ Language . VBNET ] = [ VbRegularAnalyzer , VbEnterpriseAnalyzer ] } ) ;
164154 }
165155
166156 [ TestMethod ]
167- public void GetBasicAnalyzerFullPathsByLanguage_IncludesAllLanguagesEvenWithNoAnalyzers ( )
168- {
169- fileSystem . Directory . GetFiles ( Arg . Any < string > ( ) , Arg . Any < string > ( ) ) . Returns ( [ CSharpRegularAnalyzer ] ) ;
170-
171- testSubject . GetBasicAnalyzerFullPathsByLanguage ( ) . Should ( ) . BeEquivalentTo ( new Dictionary < RoslynLanguage , List < string > > { [ Language . CSharp ] = [ CSharpRegularAnalyzer ] , [ Language . VBNET ] = [ ] } ) ;
172- }
173-
174- [ TestMethod ]
175- public void GetEnterpriseAnalyzerFullPathsByLanguage_GroupsDllsByLanguageIncludingEnterprise ( )
157+ public void GetAnalyzerFullPathsByLanguage_BothBasic_GroupsBasicDllsByLanguage ( )
176158 {
177159 fileSystem . Directory . GetFiles ( Arg . Any < string > ( ) , Arg . Any < string > ( ) ) . Returns ( [
178160 CSharpRegularAnalyzer ,
@@ -181,40 +163,37 @@ public void GetEnterpriseAnalyzerFullPathsByLanguage_GroupsDllsByLanguageIncludi
181163 VbEnterpriseAnalyzer
182164 ] ) ;
183165
184- testSubject . GetEnterpriseAnalyzerFullPathsByLanguage ( ) . Should ( ) . BeEquivalentTo ( new Dictionary < RoslynLanguage , List < string > >
185- {
186- [ Language . CSharp ] = [ CSharpRegularAnalyzer , CSharpEnterpriseAnalyzer ] , [ Language . VBNET ] = [ VbRegularAnalyzer , VbEnterpriseAnalyzer ]
187- } ) ;
166+ testSubject . GetAnalyzerFullPathsByLanguage ( new AnalyzerInfoDto ( false , false ) ) . Should ( ) . BeEquivalentTo (
167+ new Dictionary < RoslynLanguage , List < string > > { [ Language . CSharp ] = [ CSharpRegularAnalyzer ] , [ Language . VBNET ] = [ VbRegularAnalyzer ] } ) ;
188168 }
189169
190170 [ TestMethod ]
191- public void GetEnterpriseAnalyzerFullPathsByLanguage_IncludesAllLanguagesEvenWithNoAnalyzers ( )
171+ public void GetAnalyzerFullPathsByLanguage_OnlyCsharpEnterprise_GroupsDllsByLanguage ( )
192172 {
193- fileSystem . Directory . GetFiles ( Arg . Any < string > ( ) , Arg . Any < string > ( ) ) . Returns ( [ VbEnterpriseAnalyzer ] ) ;
173+ fileSystem . Directory . GetFiles ( Arg . Any < string > ( ) , Arg . Any < string > ( ) ) . Returns ( [
174+ CSharpRegularAnalyzer ,
175+ VbRegularAnalyzer ,
176+ CSharpEnterpriseAnalyzer ,
177+ VbEnterpriseAnalyzer
178+ ] ) ;
194179
195- testSubject . GetEnterpriseAnalyzerFullPathsByLanguage ( ) . Should ( ) . BeEquivalentTo ( new Dictionary < RoslynLanguage , List < string > > { [ Language . CSharp ] = [ ] , [ Language . VBNET ] = [ VbEnterpriseAnalyzer ] } ) ;
180+ testSubject . GetAnalyzerFullPathsByLanguage ( new AnalyzerInfoDto ( true , false ) ) . Should ( ) . BeEquivalentTo (
181+ new Dictionary < RoslynLanguage , List < string > > { [ Language . CSharp ] = [ CSharpRegularAnalyzer , CSharpEnterpriseAnalyzer ] , [ Language . VBNET ] = [ VbRegularAnalyzer ] } ) ;
196182 }
197183
198184 [ TestMethod ]
199- public void GetEnterpriseAnalyzerFullPathsByLanguage_ExcludesLanguagesNotInRoslynLanguages ( )
185+ public void GetAnalyzerFullPathsByLanguage_OnlyVbEnterprise_GroupsDllsByLanguage ( )
200186 {
201187 fileSystem . Directory . GetFiles ( Arg . Any < string > ( ) , Arg . Any < string > ( ) ) . Returns ( [
202188 CSharpRegularAnalyzer ,
203189 VbRegularAnalyzer ,
204190 CSharpEnterpriseAnalyzer ,
205191 VbEnterpriseAnalyzer
206192 ] ) ;
207- // Only C# is in the Roslyn languages, VB.NET is not
208- languageProvider . RoslynLanguages . Returns ( [ Language . CSharp ] ) ;
209193
210- testSubject . GetEnterpriseAnalyzerFullPathsByLanguage ( ) . Should ( ) . BeEquivalentTo ( new Dictionary < RoslynLanguage , List < string > >
211- {
212- [ Language . CSharp ] = [ CSharpRegularAnalyzer , CSharpEnterpriseAnalyzer ]
213- } ) ;
194+ testSubject . GetAnalyzerFullPathsByLanguage ( new AnalyzerInfoDto ( false , true ) ) . Should ( ) . BeEquivalentTo (
195+ new Dictionary < RoslynLanguage , List < string > > { [ Language . CSharp ] = [ CSharpRegularAnalyzer ] , [ Language . VBNET ] = [ VbRegularAnalyzer , VbEnterpriseAnalyzer ] } ) ;
214196 }
215197
216- private static string GetAnalyzerFullPath ( string pathInsideVsix , string analyzerFile )
217- {
218- return Path . Combine ( pathInsideVsix , analyzerFile ) ;
219- }
198+ private static string GetAnalyzerFullPath ( string pathInsideVsix , string analyzerFile ) => Path . Combine ( pathInsideVsix , analyzerFile ) ;
220199}
0 commit comments