/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Properties;
import org.junit.Test;
import net.sourceforge.pmd.cache.FileAnalysisCache;
import net.sourceforge.pmd.cache.NoopAnalysisCache;
import net.sourceforge.pmd.renderers.CSVRenderer;
import net.sourceforge.pmd.renderers.Renderer;
import net.sourceforge.pmd.util.ClasspathClassLoader;
public class ConfigurationTest {
@Test
public void testSuppressMarker() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default suppress marker", PMD.SUPPRESS_MARKER, configuration.getSuppressMarker());
configuration.setSuppressMarker("CUSTOM_MARKER");
assertEquals("Changed suppress marker", "CUSTOM_MARKER", configuration.getSuppressMarker());
}
@Test
public void testThreads() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default threads", Runtime.getRuntime().availableProcessors(), configuration.getThreads());
configuration.setThreads(0);
assertEquals("Changed threads", 0, configuration.getThreads());
}
@Test
public void testClassLoader() throws IOException {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default ClassLoader", PMDConfiguration.class.getClassLoader(), configuration.getClassLoader());
configuration.prependClasspath("some.jar");
assertEquals("Prepended ClassLoader class", ClasspathClassLoader.class,
configuration.getClassLoader().getClass());
URL[] urls = ((ClasspathClassLoader) configuration.getClassLoader()).getURLs();
assertEquals("urls length", 1, urls.length);
assertTrue("url[0]", urls[0].toString().endsWith("/some.jar"));
assertEquals("parent classLoader", PMDConfiguration.class.getClassLoader(),
configuration.getClassLoader().getParent());
configuration.setClassLoader(null);
assertEquals("Revert to default ClassLoader", PMDConfiguration.class.getClassLoader(),
configuration.getClassLoader());
}
@Test
public void testRuleSets() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default RuleSets", null, configuration.getRuleSets());
configuration.setRuleSets("/rulesets/basic.xml");
assertEquals("Changed RuleSets", "/rulesets/basic.xml", configuration.getRuleSets());
}
@Test
public void testMinimumPriority() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default minimum priority", RulePriority.LOW, configuration.getMinimumPriority());
configuration.setMinimumPriority(RulePriority.HIGH);
assertEquals("Changed minimum priority", RulePriority.HIGH, configuration.getMinimumPriority());
}
@Test
public void testSourceEncoding() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default source encoding", System.getProperty("file.encoding"), configuration.getSourceEncoding());
configuration.setSourceEncoding("some_other_encoding");
assertEquals("Changed source encoding", "some_other_encoding", configuration.getSourceEncoding());
}
@Test
public void testInputPaths() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default input paths", null, configuration.getInputPaths());
configuration.setInputPaths("a,b,c");
assertEquals("Changed input paths", "a,b,c", configuration.getInputPaths());
}
@Test
public void testReportShortNames() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default report short names", false, configuration.isReportShortNames());
configuration.setReportShortNames(true);
assertEquals("Changed report short names", true, configuration.isReportShortNames());
}
@Test
public void testReportFormat() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default report format", null, configuration.getReportFormat());
configuration.setReportFormat("csv");
assertEquals("Changed report format", "csv", configuration.getReportFormat());
}
@Test
public void testCreateRenderer() {
PMDConfiguration configuration = new PMDConfiguration();
configuration.setReportFormat("csv");
Renderer renderer = configuration.createRenderer();
assertEquals("Renderer class", CSVRenderer.class, renderer.getClass());
assertEquals("Default renderer show suppressed violations", false, renderer.isShowSuppressedViolations());
configuration.setShowSuppressedViolations(true);
renderer = configuration.createRenderer();
assertEquals("Renderer class", CSVRenderer.class, renderer.getClass());
assertEquals("Changed renderer show suppressed violations", true, renderer.isShowSuppressedViolations());
}
@Test
public void testReportFile() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default report file", null, configuration.getReportFile());
configuration.setReportFile("somefile");
assertEquals("Changed report file", "somefile", configuration.getReportFile());
}
@Test
public void testShowSuppressedViolations() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default show suppressed violations", false, configuration.isShowSuppressedViolations());
configuration.setShowSuppressedViolations(true);
assertEquals("Changed show suppressed violations", true, configuration.isShowSuppressedViolations());
}
@Test
public void testReportProperties() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default report properties size", 0, configuration.getReportProperties().size());
configuration.getReportProperties().put("key", "value");
assertEquals("Changed report properties size", 1, configuration.getReportProperties().size());
assertEquals("Changed report properties value", "value", configuration.getReportProperties().get("key"));
configuration.setReportProperties(new Properties());
assertEquals("Replaced report properties size", 0, configuration.getReportProperties().size());
}
@Test
public void testDebug() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default debug", false, configuration.isDebug());
configuration.setDebug(true);
assertEquals("Changed debug", true, configuration.isDebug());
}
@Test
public void testStressTest() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default stress test", false, configuration.isStressTest());
configuration.setStressTest(true);
assertEquals("Changed stress test", true, configuration.isStressTest());
}
@Test
public void testBenchmark() {
PMDConfiguration configuration = new PMDConfiguration();
assertEquals("Default benchmark", false, configuration.isBenchmark());
configuration.setBenchmark(true);
assertEquals("Changed benchmark", true, configuration.isBenchmark());
}
@Test
public void testAnalysisCache() throws IOException {
final PMDConfiguration configuration = new PMDConfiguration();
assertNotNull("Default cache is null", configuration.getAnalysisCache());
assertTrue("Default cache is not a noop", configuration.getAnalysisCache() instanceof NoopAnalysisCache);
configuration.setAnalysisCache(null);
assertNotNull("Default cache was set to null", configuration.getAnalysisCache());
final File cacheFile = File.createTempFile("pmd-", ".cache");
cacheFile.deleteOnExit();
final FileAnalysisCache analysisCache = new FileAnalysisCache(cacheFile);
configuration.setAnalysisCache(analysisCache);
assertSame("Confgured cache not stored", analysisCache, configuration.getAnalysisCache());
}
@Test
public void testAnalysisCacheLocation() throws IOException {
final PMDConfiguration configuration = new PMDConfiguration();
configuration.setAnalysisCacheLocation(null);
assertNotNull("Null cache location accepted", configuration.getAnalysisCache());
assertTrue("Null cache location accepted", configuration.getAnalysisCache() instanceof NoopAnalysisCache);
configuration.setAnalysisCacheLocation("pmd.cache");
assertNotNull("Not null cache location produces null cache", configuration.getAnalysisCache());
assertTrue("File cache location doesn't produce a file cache",
configuration.getAnalysisCache() instanceof FileAnalysisCache);
}
}