]> source.dussan.org Git - sonarqube.git/commitdiff
Improve code coverage
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 1 Sep 2014 07:56:47 +0000 (09:56 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 1 Sep 2014 07:56:59 +0000 (09:56 +0200)
plugins/sonar-xoo-plugin/pom.xml
plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/lang/SymbolReferencesSensor.java
plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/lang/SymbolReferencesSensorTest.java [new file with mode: 0644]

index 15955bbd3809d178c7fd57511feebf5d635b142e..6c1a1182306d91e7e6c1416888e6ce68e88289d0 100644 (file)
       <artifactId>sonar-testing-harness</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
index c8cafc2d7053d3b760992aaf19918ff7ffa4b600..628ce6ece704f68930b9db5128b1fc07e36cbb49 100644 (file)
@@ -44,7 +44,7 @@ public class SymbolReferencesSensor implements Sensor {
 
   private static final String SYMBOL_EXTENSION = ".symbol";
 
-  private void processFileHighlighting(InputFile inputFile, SensorContext context) {
+  private void processFileSymbol(InputFile inputFile, SensorContext context) {
     File ioFile = inputFile.file();
     File symbolFile = new File(ioFile.getParentFile(), ioFile.getName() + SYMBOL_EXTENSION);
     if (symbolFile.exists()) {
@@ -92,7 +92,7 @@ public class SymbolReferencesSensor implements Sensor {
   @Override
   public void execute(SensorContext context) {
     for (InputFile file : context.fileSystem().inputFiles(context.fileSystem().predicates().hasLanguages(Xoo.KEY))) {
-      processFileHighlighting(file, context);
+      processFileSymbol(file, context);
     }
   }
 }
diff --git a/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/lang/SymbolReferencesSensorTest.java b/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/lang/SymbolReferencesSensorTest.java
new file mode 100644 (file)
index 0000000..3c01302
--- /dev/null
@@ -0,0 +1,74 @@
+package org.sonar.xoo.lang;
+
+import org.apache.commons.io.FileUtils;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.sonar.api.batch.fs.internal.DefaultFileSystem;
+import org.sonar.api.batch.fs.internal.DefaultInputFile;
+import org.sonar.api.batch.sensor.SensorContext;
+import org.sonar.api.batch.sensor.internal.DefaultSensorDescriptor;
+import org.sonar.api.batch.sensor.symbol.Symbol;
+import org.sonar.api.batch.sensor.symbol.SymbolTableBuilder;
+
+import java.io.File;
+import java.io.IOException;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class SymbolReferencesSensorTest {
+
+  private SymbolReferencesSensor sensor;
+  private SensorContext context = mock(SensorContext.class);
+  private DefaultFileSystem fileSystem;
+
+  @Rule
+  public TemporaryFolder temp = new TemporaryFolder();
+  private File baseDir;
+
+  @Before
+  public void prepare() throws IOException {
+    baseDir = temp.newFolder();
+    sensor = new SymbolReferencesSensor();
+    fileSystem = new DefaultFileSystem();
+    when(context.fileSystem()).thenReturn(fileSystem);
+  }
+
+  @Test
+  public void testDescriptor() {
+    sensor.describe(new DefaultSensorDescriptor());
+  }
+
+  @Test
+  public void testNoExecutionIfNoSymbolFile() {
+    DefaultInputFile inputFile = new DefaultInputFile("src/foo.xoo").setAbsolutePath(new File(baseDir, "src/foo.xoo").getAbsolutePath()).setLanguage("xoo");
+    fileSystem.add(inputFile);
+    sensor.execute(context);
+  }
+
+  @Test
+  public void testExecution() throws IOException {
+    File symbol = new File(baseDir, "src/foo.xoo.symbol");
+    FileUtils.write(symbol, "1,4,7\n12,15,23\n\n#comment");
+    DefaultInputFile inputFile = new DefaultInputFile("src/foo.xoo").setAbsolutePath(new File(baseDir, "src/foo.xoo").getAbsolutePath()).setLanguage("xoo");
+    fileSystem.add(inputFile);
+    SymbolTableBuilder symbolTableBuilder = mock(SymbolTableBuilder.class);
+    when(context.symbolTableBuilder(inputFile)).thenReturn(symbolTableBuilder);
+
+    Symbol symbol1 = mock(Symbol.class);
+    when(symbolTableBuilder.newSymbol(1, 4)).thenReturn(symbol1);
+    Symbol symbol2 = mock(Symbol.class);
+    when(symbolTableBuilder.newSymbol(12, 15)).thenReturn(symbol2);
+
+    sensor.execute(context);
+
+    verify(symbolTableBuilder).newSymbol(1, 4);
+    verify(symbolTableBuilder).newReference(symbol1, 7);
+    verify(symbolTableBuilder).newSymbol(12, 15);
+    verify(symbolTableBuilder).newReference(symbol2, 23);
+  }
+
+}