2121
2222import com .sonar .it .scanner .msbuild .utils .*;
2323import com .sonar .orchestrator .build .BuildResult ;
24+ import java .util .Arrays ;
25+ import java .util .Collections ;
2426import org .assertj .core .api .AbstractListAssert ;
2527import org .assertj .core .api .ObjectAssert ;
2628import org .jetbrains .annotations .NotNull ;
2931
3032import java .nio .file .Paths ;
3133import java .util .List ;
34+ import org .sonarqube .ws .client .settings .SetRequest ;
3235
3336import static com .sonar .it .scanner .msbuild .utils .SonarAssertions .assertThat ;
3437
@@ -39,7 +42,35 @@ class TelemetryTest {
3942 @ MSBuildMinVersion (16 )
4043 @ ServerMinVersion ("2025.3" )
4144 void telemetry_telemetryFiles_areCorrect_CS () {
42- var result = runAnalysis ("Telemetry" );
45+ var context = AnalysisContext .forServer (Paths .get ("Telemetry" , "Telemetry" ).toString ());
46+ context .orchestrator .getServer ().provisionProject (context .projectKey , context .projectKey );
47+ var settings = TestUtils .newWsClient (context .orchestrator ).settings ();
48+ java .util .function .Supplier <SetRequest > request = () -> new SetRequest ().setComponent (context .projectKey );
49+ // Configure custom server settings
50+ settings .set (request .get ()
51+ .setKey ("sonar.cs.analyzeGeneratedCode" )
52+ .setValue ("false" ) // same as default, gets overridden by cli parameter
53+ );
54+ settings .set (request .get ()
55+ .setKey ("sonar.cs.analyzeRazorCode" )
56+ .setValue ("false" ) // overrides default
57+ );
58+ settings .set (request .get ()
59+ .setKey ("sonar.cs.dotcover.reportsPaths" ) // gets overridden by cli parameter
60+ .setValues (Collections .singletonList ("**/*.dotcover.*.html" ))
61+ );
62+ settings .set (request .get ()
63+ .setKey ("sonar.cs.opencover.reportsPaths" )
64+ .setValues (Arrays .asList ("opencover1.xml" , "opencover2.xml" ))
65+ );
66+ // Configure CLI properties
67+ context .begin
68+ .setDebugLogs ()
69+ .setProperty ("sonar.cs.dotcover.reportsPaths" , "dotCover.Output.html" ) // overrides server setting
70+ .setProperty ("sonar.cs.analyzeGeneratedCode" , "true" ); // overrides server setting
71+
72+ var result = context .runAnalysis ();
73+ assertThat (result .isSuccess ()).isTrue ();
4374 assertThatEndLogMetrics (result .end ()).satisfiesExactlyInAnyOrder (
4475 x -> assertThat (x ).matches ("csharp\\ .cs\\ .language_version\\ .csharp7(_3)?=3" ),
4576 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.params.sonar_scanner_skipjreprovisioning.source=CLI" ),
@@ -54,11 +85,15 @@ void telemetry_telemetryFiles_areCorrect_CS() {
5485 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.jre.bootstrapping=Disabled" ),
5586 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.scannerEngine.bootstrapping=Enabled" ),
5687 x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .scannerEngine\\ .download=CacheHit" ),
88+ x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.params.sonar_cs_analyzerazorcode.source=SQ_SERVER_SETTINGS" ),
89+ x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.params.sonar_cs_opencover_reportspaths.source=SQ_SERVER_SETTINGS" ),
90+ x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.params.sonar_cs_analyzegeneratedcode.source=CLI" ),
91+ x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.params.sonar_cs_dotcover_reportspaths.source=CLI" ),
92+ x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .begin\\ .runtime=(netframework|netcore)" ),
5793 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.legacyTFS=NotCalled" ),
5894 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.Sarif.V1_0_0_0.Valid=True" ),
5995 // coverage_conversion=true is tested in CodeCoverageTest.whenRunningOnAzureDevops_coverageIsImported
6096 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.coverage_conversion=false" ),
61- x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .begin\\ .runtime=(netframework|netcore)" ),
6297 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.visual_studio_version=" ),
6398 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.msbuild_version=" ),
6499 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.netcore_sdk_version=" ),
@@ -98,10 +133,10 @@ void telemetry_telemetryFiles_areCorrect_VB() {
98133 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.jre.bootstrapping=Disabled" ),
99134 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.scannerEngine.bootstrapping=Enabled" ),
100135 x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .scannerEngine\\ .download=CacheHit" ),
136+ x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .begin\\ .runtime=(netframework|netcore)" ),
101137 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.legacyTFS=NotCalled" ),
102138 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.Sarif.V1_0_0_0.Valid=True" ),
103139 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.coverage_conversion=false" ),
104- x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .begin\\ .runtime=(netframework|netcore)" ),
105140 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.visual_studio_version=" ),
106141 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.msbuild_version=" ),
107142 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.netcore_sdk_version=" ),
@@ -131,10 +166,10 @@ void telemetry_telemetryFiles_areCorrect_CSVB_Mixed() {
131166 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.jre.bootstrapping=Disabled" ),
132167 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.scannerEngine.bootstrapping=Enabled" ),
133168 x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .scannerEngine\\ .download=CacheHit" ),
169+ x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .begin\\ .runtime=(netframework|netcore)" ),
134170 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.legacyTFS=NotCalled" ),
135171 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.Sarif.V1_0_0_0.Valid=True" ),
136172 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.coverage_conversion=false" ),
137- x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .begin\\ .runtime=(netframework|netcore)" ),
138173 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.visual_studio_version=" ),
139174 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.msbuild_version=" ),
140175 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.netcore_sdk_version=" ),
@@ -176,10 +211,10 @@ void telemetry_multiTargetFramework_tfmsAreCorrectlyRecorded() {
176211 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.jre.bootstrapping=Disabled" ),
177212 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.scannerEngine.bootstrapping=Enabled" ),
178213 x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .scannerEngine\\ .download=CacheHit" ),
214+ x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .begin\\ .runtime=(netframework|netcore)" ),
179215 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.legacyTFS=NotCalled" ),
180216 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.Sarif.V1_0_0_0.Valid=True" ),
181217 x -> assertThat (x ).isEqualTo ("dotnetenterprise.s4net.endstep.coverage_conversion=false" ),
182- x -> assertThat (x ).matches ("dotnetenterprise\\ .s4net\\ .begin\\ .runtime=(netframework|netcore)" ),
183218 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.visual_studio_version=" ),
184219 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.msbuild_version=" ),
185220 x -> assertThat (x ).startsWith ("dotnetenterprise.s4net.build.netcore_sdk_version=" ),
0 commit comments