/*
* Sonar is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* Sonar is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Sonar; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
*/
package hudson.plugins.sonar;
import hudson.model.AbstractProject;
import hudson.plugins.sonar.model.LightProjectConfig;
import hudson.plugins.sonar.model.ReportsConfig;
import org.junit.Ignore;
import org.jvnet.hudson.test.recipes.LocalData;
/**
* @author Evgeny Mandrikov
*/
@Ignore("Due to http://jira.codehaus.org/browse/SONARPLUGINS-402")
public class MigrationTest extends SonarTestCase {
@LocalData
public void testOldMaven() {
SonarPublisher sonarPublisher = getSonarPublisher(getProject("oldMaven"));
verifyGeneral(sonarPublisher);
assertFalse(sonarPublisher.isUseSonarLight());
}
@LocalData
public void testOldFreeStyle() {
SonarPublisher sonarPublisher = getSonarPublisher(getProject("oldFreeStyle"));
verifyGeneralFreeStyle(sonarPublisher);
assertFalse(sonarPublisher.isUseSonarLight());
}
@LocalData
public void testOldLight() {
SonarPublisher sonarPublisher = getSonarPublisher(getProject("oldLight"));
verifyGeneralFreeStyle(sonarPublisher);
verifyLight(sonarPublisher);
assertFalse(sonarPublisher.getLightProject().isReuseReports());
}
@LocalData
public void testOldLightReuseReports() {
SonarPublisher sonarPublisher = getSonarPublisher(getProject("oldLightReuseReports"));
verifyGeneralFreeStyle(sonarPublisher);
verifyLight(sonarPublisher);
LightProjectConfig project = sonarPublisher.getLightProject();
assertTrue(project.isReuseReports());
ReportsConfig reports = project.getReports();
assertEquals("target/surefire-reports", reports.getSurefireReportsPath());
assertEquals("target/site/cobertura/coverage.xml", reports.getCoberturaReportPath());
assertEquals("target/site/clover/clover.xml", reports.getCloverReportPath());
}
// ====================================================
private void verifyGeneralFreeStyle(SonarPublisher sonarPublisher) {
verifyGeneral(sonarPublisher);
assertEquals("My Maven", sonarPublisher.getMavenInstallationName());
}
private void verifyGeneral(SonarPublisher sonarPublisher) {
assertEquals((Integer) 1, sonarPublisher.getConfigVersion());
assertEquals("My Sonar", sonarPublisher.getInstallationName());
assertEquals("-Dproperty=value", sonarPublisher.getJobAdditionalProperties());
assertEquals("-Xmx512m", sonarPublisher.getMavenOpts());
verifyTriggers(sonarPublisher);
}
private void verifyLight(SonarPublisher sonarPublisher) {
assertTrue(sonarPublisher.isUseSonarLight());
LightProjectConfig project = sonarPublisher.getLightProject();
assertEquals("example.org", project.getGroupId());
assertEquals("myproject", project.getArtifactId());
assertEquals("My Project", project.getProjectName());
assertEquals("0.1-SNAPSHOT", project.getProjectVersion());
assertEquals("Project description.", project.getProjectDescription());
assertEquals("1.5", project.getJavaVersion());
assertEquals("src/java", project.getProjectSrcDir());
assertEquals("UTF-8", project.getProjectSrcEncoding());
assertEquals("target/classes", project.getProjectBinDir());
}
private void verifyTriggers(SonarPublisher sonarPublisher) {
assertFalse("Use global triggers", sonarPublisher.isUseGlobalTriggers());
assertTrue(sonarPublisher.getTriggers().isScmBuilds());
assertTrue(sonarPublisher.getTriggers().isTimerBuilds());
assertTrue(sonarPublisher.getTriggers().isSnapshotDependencyBuilds());
assertTrue(sonarPublisher.getTriggers().isSkipIfBuildFails());
assertTrue(
"triggers.userBuilds added in 1.2 and should be true after migration",
sonarPublisher.getTriggers().isUserBuilds()
);
}
private AbstractProject getProject(String name) {
return (AbstractProject) hudson.getItem(name);
}
private SonarPublisher getSonarPublisher(AbstractProject project) {
return (SonarPublisher) project.getPublishersList().get(SonarPublisher.class);
}
}