2323import org .sonar .api .batch .fs .internal .DefaultFileSystem ;
2424
2525import org .junit .Before ;
26+ import org .junit .Rule ;
2627import org .junit .Test ;
2728import static org .mockito .Mockito .when ;
2829
30+ import org .sonar .api .utils .log .LogTester ;
31+ import org .sonar .api .utils .log .LoggerLevel ;
32+
2933import org .sonar .api .batch .fs .internal .DefaultInputFile ;
3034import org .sonar .api .batch .sensor .internal .SensorContextTester ;
3135import org .sonar .api .config .Settings ;
@@ -38,6 +42,9 @@ public class CxxOtherSensorTest {
3842 private DefaultFileSystem fs ;
3943 private CxxLanguage language ;
4044
45+ @ Rule
46+ public LogTester logTester = new LogTester ();
47+
4148 @ Before
4249 public void setUp () {
4350 fs = TestUtils .mockFileSystem ();
@@ -144,4 +151,73 @@ public void shouldReportOnlyOneViolationAndRemoveDuplicates() {
144151 sensor .execute (context );
145152 assertThat (context .allIssues ()).hasSize (1 );
146153 }
154+
155+ @ Test
156+ public void shouldNotCreateMessage () {
157+ SensorContextTester context = SensorContextTester .create (fs .baseDir ());
158+ when (language .getPluginProperty ("other.xslt.1.stylesheet" )).thenReturn ("something" );
159+
160+ Settings settings = new Settings ();
161+ context .setSettings (settings );
162+
163+ context .fileSystem ().add (new DefaultInputFile ("myProjectKey" , "sources/utils/code_chunks.cpp" ).setLanguage ("cpp" ).initMetadata ("asd\n asdas\n asda\n " ));
164+ sensor = new CxxOtherSensor (language , settings );
165+ sensor .execute (context );
166+ assertThat (context .allIssues ()).hasSize (0 );
167+ }
168+
169+ @ Test
170+ public void shouldCreateMissingStylesheetMessage () {
171+ logTester .clear ();
172+ SensorContextTester context = SensorContextTester .create (fs .baseDir ());
173+ when (language .getPluginProperty ("other.xslt.1.stylesheet" )).thenReturn ("something" );
174+ when (language .getPluginProperty ("other.xslt.1.outputs" )).thenReturn ("something" );
175+
176+ Settings settings = new Settings ();
177+ settings .setProperty (language .getPluginProperty (CxxOtherSensor .REPORT_PATH_KEY ), "externalrules-reports/externalrules-with-duplicates.xml" );
178+ context .setSettings (settings );
179+
180+ context .fileSystem ().add (new DefaultInputFile ("myProjectKey" , "sources/utils/code_chunks.cpp" ).setLanguage ("cpp" ).initMetadata ("asd\n asdas\n asda\n " ));
181+ sensor = new CxxOtherSensor (language , settings );
182+ sensor .execute (context );
183+ assertThat (logTester .logs (LoggerLevel .ERROR )).contains ("something is not defined." );
184+
185+ }
186+
187+ @ Test
188+ public void shouldCreateMissingInputKeyMessage () {
189+ logTester .clear ();
190+ SensorContextTester context = SensorContextTester .create (fs .baseDir ());
191+ when (language .getPluginProperty ("other.xslt.1.stylesheet" )).thenReturn ("something" );
192+ when (language .getPluginProperty ("other.xslt.1.outputs" )).thenReturn ("something" );
193+
194+ Settings settings = new Settings ();
195+ settings .setProperty (language .getPluginProperty (CxxOtherSensor .REPORT_PATH_KEY ), "something" );
196+ settings .setProperty ("something" , "something" );
197+ context .setSettings (settings );
198+
199+ context .fileSystem ().add (new DefaultInputFile ("myProjectKey" , "sources/utils/code_chunks.cpp" ).setLanguage ("cpp" ).initMetadata ("asd\n asdas\n asda\n " ));
200+ sensor = new CxxOtherSensor (language , settings );
201+ sensor .execute (context );
202+ assertThat (logTester .logs (LoggerLevel .ERROR )).contains (" inputKey is not defined." );
203+ }
204+
205+ @ Test
206+ public void shouldCreateMissingEmptyInputsMessage () {
207+ logTester .clear ();
208+ SensorContextTester context = SensorContextTester .create (fs .baseDir ());
209+ when (language .getPluginProperty ("other.xslt.1.stylesheet" )).thenReturn ("something" );
210+ when (language .getPluginProperty ("other.xslt.1.inputs" )).thenReturn ("someInput" );
211+
212+ Settings settings = new Settings ();
213+ settings .setProperty (language .getPluginProperty (CxxOtherSensor .REPORT_PATH_KEY ), "something" );
214+ settings .setProperty ("something" , "something" );
215+ context .setSettings (settings );
216+
217+ context .fileSystem ().add (new DefaultInputFile ("myProjectKey" , "sources/utils/code_chunks.cpp" ).setLanguage ("cpp" ).initMetadata ("asd\n asdas\n asda\n " ));
218+ sensor = new CxxOtherSensor (language , settings );
219+ sensor .execute (context );
220+ assertThat (logTester .logs (LoggerLevel .ERROR )).contains ("someInput file is not defined." );
221+ }
222+
147223}
0 commit comments