/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.testframework;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.junit.Ignore;
import net.sourceforge.pmd.Rule;
import net.sourceforge.pmd.lang.LanguageVersion;
/**
* Stores the information required to run a complete test.
*/
@Ignore("this is not a unit test")
public class TestDescriptor {
private Rule rule;
private Properties properties;
private String description;
private int numberOfProblemsExpected;
private List<String> expectedMessages = new ArrayList<>();
private List<Integer> expectedLineNumbers = new ArrayList<>();
private String code;
private LanguageVersion languageVersion;
// default, avoids unintentional mixing of state between test cases
private boolean reinitializeRule = true;
private boolean isRegressionTest = true;
private boolean useAuxClasspath = true;
private int numberInDocument = -1;
// Empty descriptor added to please mvn surefire plugin
public TestDescriptor() {
}
public TestDescriptor(String code, String description, int numberOfProblemsExpected, Rule rule) {
this(code, description, numberOfProblemsExpected, rule, rule.getLanguage().getDefaultVersion());
}
public TestDescriptor(String code, String description, int numberOfProblemsExpected, Rule rule,
LanguageVersion languageVersion) {
this.rule = rule;
this.code = code;
this.description = description;
this.numberOfProblemsExpected = numberOfProblemsExpected;
this.languageVersion = languageVersion;
}
public int getNumberInDocument() {
return numberInDocument;
}
public void setNumberInDocument(int numberInDocument) {
this.numberInDocument = numberInDocument;
}
public void setExpectedMessages(List<String> messages) {
expectedMessages.clear();
expectedMessages.addAll(messages);
}
public List<String> getExpectedMessages() {
return expectedMessages;
}
public void setExpectedLineNumbers(List<Integer> expectedLineNumbers) {
this.expectedLineNumbers.clear();
this.expectedLineNumbers.addAll(expectedLineNumbers);
}
public List<Integer> getExpectedLineNumbers() {
return expectedLineNumbers;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public Properties getProperties() {
return properties;
}
public String getCode() {
return code;
}
public LanguageVersion getLanguageVersion() {
return languageVersion;
}
public String getDescription() {
return description;
}
public int getNumberOfProblemsExpected() {
return numberOfProblemsExpected;
}
public Rule getRule() {
return rule;
}
public boolean getReinitializeRule() {
return reinitializeRule;
}
public void setReinitializeRule(boolean reinitializeRule) {
this.reinitializeRule = reinitializeRule;
}
/**
* Checks whether we are testing for regression problems only. Return value
* is based on the system property "pmd.regress".
*
* @return <code>false</code> if system property "pmd.regress" is set to
* <code>false</code>, <code>true</code> otherwise
*/
public static boolean inRegressionTestMode() {
boolean inRegressionMode = true; // default
try {
// get the "pmd.regress" System property
String property = System.getProperty("pmd.regress");
if (property != null) {
inRegressionMode = Boolean.parseBoolean(property);
}
} catch (IllegalArgumentException e) {
}
return inRegressionMode;
}
public boolean isRegressionTest() {
return isRegressionTest;
}
public void setRegressionTest(boolean isRegressionTest) {
this.isRegressionTest = isRegressionTest;
}
public void setUseAuxClasspath(boolean useAuxClasspath) {
this.useAuxClasspath = useAuxClasspath;
}
public boolean isUseAuxClasspath() {
return useAuxClasspath;
}
}