import org.sonar.api.BatchExtension;
import org.sonar.api.Plugin;
import org.sonar.api.batch.AbstractCoverageExtension;
+import org.sonar.api.resources.Java;
import org.sonar.api.resources.Project;
import org.sonar.api.utils.SonarException;
import org.sonar.core.plugin.AbstractPluginRepository;
protected boolean shouldRegisterExtension(PicoContainer container, String pluginKey, Object extension) {
boolean ok = isType(extension, BatchExtension.class);
if (ok && isType(extension, AbstractCoverageExtension.class)) {
- ok = shouldRegisterCoverageExtension(pluginKey, container.getComponent(Configuration.class));
+ ok = shouldRegisterCoverageExtension(pluginKey, container.getComponent(Project.class), container.getComponent(Configuration.class));
if (!ok) {
LOG.debug("The following extension is ignored: " + extension + ". See the parameter " + AbstractCoverageExtension.PARAM_PLUGIN);
}
return ok;
}
- boolean shouldRegisterCoverageExtension(String pluginKey, Configuration conf) {
- String[] selectedPluginKeys = conf.getStringArray(AbstractCoverageExtension.PARAM_PLUGIN);
- if (ArrayUtils.isEmpty(selectedPluginKeys)) {
- selectedPluginKeys = new String[]{AbstractCoverageExtension.DEFAULT_PLUGIN};
+ boolean shouldRegisterCoverageExtension(String pluginKey, Project project, Configuration conf) {
+ boolean ok=true;
+ if (StringUtils.equals(project.getLanguageKey(), Java.KEY)) {
+ String[] selectedPluginKeys = conf.getStringArray(AbstractCoverageExtension.PARAM_PLUGIN);
+ if (ArrayUtils.isEmpty(selectedPluginKeys)) {
+ selectedPluginKeys = new String[]{AbstractCoverageExtension.DEFAULT_PLUGIN};
+ }
+ String oldCoveragePluginKey = getOldCoveragePluginKey(pluginKey);
+ ok = ArrayUtils.contains(selectedPluginKeys, pluginKey) || ArrayUtils.contains(selectedPluginKeys, oldCoveragePluginKey);
}
- String oldCoveragePluginKey = getOldCoveragePluginKey(pluginKey);
- return ArrayUtils.contains(selectedPluginKeys, pluginKey) || ArrayUtils.contains(selectedPluginKeys, oldCoveragePluginKey);
+ return ok;
}
}
import org.sonar.api.BatchExtension;
import org.sonar.api.ServerExtension;
import org.sonar.api.batch.AbstractCoverageExtension;
+import org.sonar.api.resources.Java;
+import org.sonar.api.resources.Project;
import org.sonar.api.utils.IocContainer;
import static org.hamcrest.core.Is.is;
public void shouldRegisterOnlyCoberturaExtensionByDefault() {
BatchPluginRepository repository = new BatchPluginRepository();
PropertiesConfiguration conf = new PropertiesConfiguration();
- assertThat(repository.shouldRegisterCoverageExtension("cobertura", conf), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("clover", conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("cobertura", newJavaProject(), conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("clover", newJavaProject(),conf), is(false));
}
@Test
Configuration conf = new PropertiesConfiguration();
conf.setProperty(AbstractCoverageExtension.PARAM_PLUGIN, "clover,phpunit");
BatchPluginRepository repository = new BatchPluginRepository();
- assertThat(repository.shouldRegisterCoverageExtension("cobertura", conf), is(false));
- assertThat(repository.shouldRegisterCoverageExtension("clover", conf), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("phpunit", conf), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("other", conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("cobertura", newJavaProject(),conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("clover", newJavaProject(), conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("phpunit", newJavaProject(),conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("other", newJavaProject(),conf), is(false));
}
@Test
conf.setProperty(AbstractCoverageExtension.PARAM_PLUGIN, "emma");
BatchPluginRepository repository = new BatchPluginRepository();
- assertThat(repository.shouldRegisterCoverageExtension("sonar-emma-plugin", conf), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("emma", conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("sonar-emma-plugin", newJavaProject(),conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("emma", newJavaProject(),conf), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("sonar-jacoco-plugin", conf), is(false));
- assertThat(repository.shouldRegisterCoverageExtension("jacoco", conf), is(false));
- assertThat(repository.shouldRegisterCoverageExtension("clover", conf), is(false));
- assertThat(repository.shouldRegisterCoverageExtension("cobertura", conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("sonar-jacoco-plugin", newJavaProject(),conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("jacoco", newJavaProject(),conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("clover", newJavaProject(),conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("cobertura", newJavaProject(),conf), is(false));
}
@Test
conf.setProperty(AbstractCoverageExtension.PARAM_PLUGIN, "cobertura,jacoco");
BatchPluginRepository repository = new BatchPluginRepository();
- assertThat(repository.shouldRegisterCoverageExtension("sonar-jacoco-plugin", conf), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("jacoco", conf), is(true));
- assertThat(repository.shouldRegisterCoverageExtension("emma", conf), is(false));
+ assertThat(repository.shouldRegisterCoverageExtension("sonar-jacoco-plugin", newJavaProject(),conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("jacoco", newJavaProject(),conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("emma", newJavaProject(),conf), is(false));
+ }
+
+ @Test
+ public void shouldNotCheckCoverageExtensionsOnNonJavaProjects() {
+ Configuration conf = new PropertiesConfiguration();
+ conf.setProperty(AbstractCoverageExtension.PARAM_PLUGIN, "cobertura");
+ BatchPluginRepository repository = new BatchPluginRepository();
+
+ assertThat(repository.shouldRegisterCoverageExtension("groovy", newGroovyProject(),conf), is(true));
+ assertThat(repository.shouldRegisterCoverageExtension("groovy", newJavaProject(),conf), is(false));
+ }
+
+ private static Project newJavaProject() {
+ return new Project("foo").setLanguageKey(Java.KEY);
+ }
+
+ private static Project newGroovyProject() {
+ return new Project("foo").setLanguageKey("grvy");
}
public static class FakeBatchExtension implements BatchExtension {