View Javadoc
1   /**
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd.testframework;
5   
6   import java.util.ArrayList;
7   import java.util.List;
8   import java.util.Properties;
9   
10  import net.sourceforge.pmd.Rule;
11  import net.sourceforge.pmd.lang.LanguageVersion;
12  
13  import org.junit.Ignore;
14  
15  /**
16   * Stores the information required to run a complete test.
17   */
18  @Ignore("this is not a unit test")
19  public class TestDescriptor {
20      private Rule rule;
21      private Properties properties;
22      private String description;
23      private int numberOfProblemsExpected;
24      private List<String> expectedMessages = new ArrayList<String>();
25      private List<Integer> expectedLineNumbers = new ArrayList<Integer>();
26      private String code;
27      private LanguageVersion languageVersion;
28      private boolean reinitializeRule = true;   //default, avoids unintentional mixing of state between test cases
29      private boolean isRegressionTest = true;
30      private int numberInDocument = -1;
31  
32      // Empty descriptor added to please mvn surefire plugin
33      public TestDescriptor() {
34      	
35      }
36      
37      public TestDescriptor(String code, String description, int numberOfProblemsExpected, Rule rule) {
38          this(code, description, numberOfProblemsExpected, rule, rule.getLanguage().getDefaultVersion());
39      }
40      
41      public TestDescriptor(String code, String description, int numberOfProblemsExpected, Rule rule, LanguageVersion languageVersion) {
42          this.rule = rule;
43          this.code = code;
44          this.description = description;
45          this.numberOfProblemsExpected = numberOfProblemsExpected;
46          this.languageVersion = languageVersion;
47      }
48  
49      public int getNumberInDocument() {
50          return numberInDocument;
51      }
52  
53      public void setNumberInDocument(int numberInDocument) {
54          this.numberInDocument = numberInDocument;
55      }
56  
57      public void setExpectedMessages(List<String> messages) {
58          expectedMessages.clear();
59          expectedMessages.addAll(messages);
60      }
61  
62      public List<String> getExpectedMessages() {
63          return expectedMessages;
64      }
65  
66      public void setExpectedLineNumbers(List<Integer> expectedLineNumbers) {
67          this.expectedLineNumbers.clear();
68          this.expectedLineNumbers.addAll(expectedLineNumbers);
69      }
70  
71      public List<Integer> getExpectedLineNumbers() {
72          return expectedLineNumbers;
73      }
74  
75      public void setProperties(Properties properties) {
76          this.properties = properties;
77      }
78      
79      public Properties getProperties() {
80          return properties;
81      }
82      
83      public String getCode() {
84          return code;
85      }
86  
87      public LanguageVersion getLanguageVersion() {
88          return languageVersion;
89      }
90  
91      public String getDescription() {
92          return description;
93      }
94  
95      public int getNumberOfProblemsExpected() {
96          return numberOfProblemsExpected;
97      }
98  
99      public Rule getRule() {
100         return rule;
101     }
102 
103     public boolean getReinitializeRule() {
104         return reinitializeRule;
105     }
106 
107     public void setReinitializeRule(boolean reinitializeRule) {
108         this.reinitializeRule = reinitializeRule;
109     }
110 
111     /**
112      * Checks whether we are testing for regression problems only.
113      * Return value is based on the system property "pmd.regress".
114      * 
115      * @return <code>false</code> if system property "pmd.regress" is set to <code>false</code>, <code>true</code> otherwise
116      */
117     public static boolean inRegressionTestMode() {
118 	boolean inRegressionMode = true; // default
119 	try {
120 	    //get the "pmd.regress" System property
121 	    String property = System.getProperty("pmd.regress");
122 	    if (property != null) {
123 		inRegressionMode = Boolean.parseBoolean(property);
124 	    }
125 	} catch (IllegalArgumentException e) {
126 	}
127 	
128         return inRegressionMode;
129     }
130 
131     public boolean isRegressionTest() {
132         return isRegressionTest;
133     }
134 
135     public void setRegressionTest(boolean isRegressionTest) {
136         this.isRegressionTest = isRegressionTest;
137     }
138 }