/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.cli; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.contrib.java.lang.system.ExpectedSystemExit; import org.junit.contrib.java.lang.system.RestoreSystemProperties; /** * Unit test for {@link PMDCommandLineInterface} */ public class PMDCommandLineInterfaceTest { @Rule public final ExpectedSystemExit exit = ExpectedSystemExit.none(); @Rule // Restores system properties after test public final RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties(); @Before public void clearSystemProperties() { System.clearProperty(PMDCommandLineInterface.NO_EXIT_AFTER_RUN); System.clearProperty(PMDCommandLineInterface.STATUS_CODE_PROPERTY); } @Test public void testProperties() { PMDParameters params = new PMDParameters(); String[] args = { "-d", "source_folder", "-f", "yahtml", "-P", "outputDir=output_folder", "-R", "java-empty", }; PMDCommandLineInterface.extractParameters(params, args, "PMD"); Assert.assertEquals("output_folder", params.getProperties().getProperty("outputDir")); } @Test public void testMultipleProperties() { PMDParameters params = new PMDParameters(); String[] args = { "-d", "source_folder", "-f", "ideaj", "-P", "sourcePath=/home/user/source/", "-P", "fileName=Foo.java", "-P", "classAndMethodName=Foo.method", "-R", "java-empty", }; PMDCommandLineInterface.extractParameters(params, args, "PMD"); Assert.assertEquals("/home/user/source/", params.getProperties().getProperty("sourcePath")); Assert.assertEquals("Foo.java", params.getProperties().getProperty("fileName")); Assert.assertEquals("Foo.method", params.getProperties().getProperty("classAndMethodName")); } @Test public void testSetStatusCodeOrExitDoExit() { exit.expectSystemExitWithStatus(0); PMDCommandLineInterface.setStatusCodeOrExit(0); } @Test public void testSetStatusCodeOrExitSetStatus() { System.setProperty(PMDCommandLineInterface.NO_EXIT_AFTER_RUN, "1"); PMDCommandLineInterface.setStatusCodeOrExit(0); Assert.assertEquals(System.getProperty(PMDCommandLineInterface.STATUS_CODE_PROPERTY), "0"); } }