1 /** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package test.net.sourceforge.pmd; 5 6 import static org.junit.Assert.assertEquals; 7 import static org.junit.Assert.assertSame; 8 import static org.junit.Assert.assertTrue; 9 import net.sourceforge.pmd.CommandLineOptions; 10 import net.sourceforge.pmd.renderers.CSVRenderer; 11 import net.sourceforge.pmd.renderers.EmacsRenderer; 12 import net.sourceforge.pmd.renderers.HTMLRenderer; 13 import net.sourceforge.pmd.renderers.IDEAJRenderer; 14 import net.sourceforge.pmd.renderers.TextRenderer; 15 import net.sourceforge.pmd.renderers.VBHTMLRenderer; 16 import net.sourceforge.pmd.renderers.XMLRenderer; 17 18 import org.junit.Test; 19 20 import java.io.InputStreamReader; 21 22 import junit.framework.JUnit4TestAdapter; 23 24 public class CommandLineOptionsTest { 25 26 @Test 27 public void testTargetJDKVersion() { 28 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"}); 29 assertEquals("1.5", opt.getTargetJDK()); 30 opt = new CommandLineOptions(new String[]{"file", "format", "ruleset", "-targetjdk", "1.3"}); 31 assertEquals("1.3", opt.getTargetJDK()); 32 opt = new CommandLineOptions(new String[]{"file", "format", "ruleset", "-targetjdk", "1.5"}); 33 assertEquals("1.5", opt.getTargetJDK()); 34 opt = new CommandLineOptions(new String[]{"file", "format", "ruleset", "-targetjdk", "1.6"}); 35 assertEquals("1.6", opt.getTargetJDK()); 36 opt = new CommandLineOptions(new String[]{"-targetjdk", "1.6", "file", "format", "ruleset"}); 37 assertEquals("1.6", opt.getTargetJDK()); 38 } 39 40 @Test 41 public void testDebug() { 42 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic", "-debug"}); 43 assertTrue(opt.debugEnabled()); 44 opt = new CommandLineOptions(new String[]{"-debug", "file", "format", "basic"}); 45 assertTrue(opt.debugEnabled()); 46 } 47 48 @Test 49 public void testExcludeMarker() { 50 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic", "-excludemarker", "FOOBAR"}); 51 assertEquals("FOOBAR", opt.getExcludeMarker()); 52 opt = new CommandLineOptions(new String[]{"-excludemarker", "FOOBAR", "file", "format", "basic"}); 53 assertEquals("FOOBAR", opt.getExcludeMarker()); 54 } 55 56 @Test 57 public void testShortNames() { 58 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic", "-shortnames"}); 59 assertTrue(opt.shortNamesEnabled()); 60 opt = new CommandLineOptions(new String[]{"-shortnames", "file", "format", "basic"}); 61 assertTrue(opt.shortNamesEnabled()); 62 } 63 64 @Test 65 public void testEncoding() { 66 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"}); 67 assertTrue(opt.getEncoding().equals((new InputStreamReader(System.in)).getEncoding())); 68 opt = new CommandLineOptions(new String[]{"file", "format", "ruleset", "-encoding", "UTF-8"}); 69 assertTrue(opt.getEncoding().equals("UTF-8")); 70 opt = new CommandLineOptions(new String[]{"-encoding", "UTF-8", "file", "format", "ruleset"}); 71 assertTrue(opt.getEncoding().equals("UTF-8")); 72 } 73 74 @Test 75 public void testInputFileName() { 76 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"}); 77 assertEquals("file", opt.getInputPath()); 78 } 79 80 @Test 81 public void testReportFormat() { 82 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"}); 83 assertEquals("format", opt.getReportFormat()); 84 } 85 86 @Test 87 public void testRulesets() { 88 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic"}); 89 assertEquals("rulesets/basic.xml", opt.getRulesets()); 90 } 91 92 @Test 93 public void testCommaSeparatedFiles() { 94 CommandLineOptions opt = new CommandLineOptions(new String[]{"file1,file2,file3", "format", "basic"}); 95 assertTrue(opt.containsCommaSeparatedFileList()); 96 } 97 98 @Test(expected = RuntimeException.class) 99 public void testNotEnoughArgs() { 100 new CommandLineOptions(new String[] { "file1", "format" }); 101 } 102 103 @Test(expected = RuntimeException.class) 104 public void testNullArgs() { 105 new CommandLineOptions(null); 106 } 107 108 @Test 109 public void testReportFile(){ 110 111 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "format", "basic", "-reportfile", "foo.txt"}); 112 assertSame("foo.txt", opt.getReportFile()); 113 opt = new CommandLineOptions(new String[]{"-reportfile", "foo.txt", "file", "format", "basic"}); 114 assertSame("foo.txt", opt.getReportFile()); 115 } 116 117 @Test 118 public void testCpus() { 119 120 CommandLineOptions opt = new CommandLineOptions(new String[] { "file", "format", "basic", "-cpus", "2" }); 121 assertEquals(2, opt.getCpus()); 122 opt = new CommandLineOptions(new String[] { "-cpus", "2", "file", "format", "basic" }); 123 assertEquals(2, opt.getCpus()); 124 } 125 126 @Test 127 public void testRenderer() { 128 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "xml", "basic"}); 129 assertTrue(opt.createRenderer() instanceof XMLRenderer); 130 opt = new CommandLineOptions(new String[]{"file", "html", "basic"}); 131 assertTrue(opt.createRenderer() instanceof HTMLRenderer); 132 opt = new CommandLineOptions(new String[]{"file", "text", "basic"}); 133 assertTrue(opt.createRenderer() instanceof TextRenderer); 134 opt = new CommandLineOptions(new String[]{"file", "emacs", "basic"}); 135 assertTrue(opt.createRenderer() instanceof EmacsRenderer); 136 opt = new CommandLineOptions(new String[]{"file", "csv", "basic"}); 137 assertTrue(opt.createRenderer() instanceof CSVRenderer); 138 opt = new CommandLineOptions(new String[]{"file", "vbhtml", "basic"}); 139 assertTrue(opt.createRenderer() instanceof VBHTMLRenderer); 140 opt = new CommandLineOptions(new String[]{"file", "ideaj", "basic"}); 141 assertTrue(opt.createRenderer() instanceof IDEAJRenderer); 142 } 143 144 @Test(expected = IllegalArgumentException.class) 145 public void illegalArgument1() { 146 CommandLineOptions opt = new CommandLineOptions(new String[] { "file", "", "basic" }); 147 opt.createRenderer(); 148 } 149 150 @Test(expected = IllegalArgumentException.class) 151 public void illegalArgument2() { 152 CommandLineOptions opt = new CommandLineOptions(new String[]{"file", "fiddlefaddle", "basic"}); 153 opt.createRenderer(); 154 } 155 156 @Test 157 public void testOptionsFirst(){ 158 CommandLineOptions opt = new CommandLineOptions(new String[] { "-cpus", "2", "-debug", "file", "format", "basic" }); 159 assertEquals(2, opt.getCpus()); 160 assertEquals("file", opt.getInputPath()); 161 assertEquals("format", opt.getReportFormat()); 162 assertEquals("rulesets/basic.xml", opt.getRulesets()); 163 assertTrue(opt.debugEnabled()); 164 } 165 166 @Test 167 public void testAuxilaryClasspath() { 168 CommandLineOptions opt = new CommandLineOptions(new String[] { "-auxclasspath", "classpath", "file", "format", "basic" }); 169 assertEquals("classpath", opt.getAuxClasspath()); 170 } 171 172 @Test(expected = IllegalArgumentException.class) 173 public void testAuxilaryClasspathIllegal() { 174 CommandLineOptions opt = new CommandLineOptions(new String[] { "file", "format", "basic", "-auxclasspath" }); 175 } 176 177 public static junit.framework.Test suite() { 178 return new JUnit4TestAdapter(CommandLineOptionsTest.class); 179 } 180 }