1ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beustpackage org.testng;
2ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
3ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beustimport com.beust.jcommander.Parameter;
48d66b5b025416a08ee2ef9072dca52ea0995b0b5Cédric Beustimport com.beust.jcommander.converters.CommaParameterSplitter;
5ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
6aae11d5eb8df906691ce4517a6c59a6bc388be00Cédric Beustimport org.testng.collections.Lists;
789801bb69bb57d6836189c381ad4950b29534c4cJulien Herrimport org.testng.xml.XmlSuite;
8aae11d5eb8df906691ce4517a6c59a6bc388be00Cédric Beust
9e1a578580e691232c156a8d8093583bd99bd7f96Cédric Beustimport java.util.ArrayList;
108085805131c76156b59d12987d1593beed7a184dCédric Beustimport java.util.List;
11ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
128085805131c76156b59d12987d1593beed7a184dCédric Beustpublic class CommandLineArgs {
13ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
148085805131c76156b59d12987d1593beed7a184dCédric Beust  @Parameter(description = "The XML suite files to run")
158085805131c76156b59d12987d1593beed7a184dCédric Beust  public List<String> suiteFiles = Lists.newArrayList();
16ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
1755cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String LOG = "-log";
1855cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String VERBOSE = "-verbose";
1955cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = { LOG, VERBOSE }, description = "Level of verbosity")
208085805131c76156b59d12987d1593beed7a184dCédric Beust  public Integer verbose;
21ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
2255cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String GROUPS = "-groups";
2355cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = GROUPS, description = "Comma-separated list of group names to be run")
248085805131c76156b59d12987d1593beed7a184dCédric Beust  public String groups;
25ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
2655cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String EXCLUDED_GROUPS = "-excludegroups";
2755cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = EXCLUDED_GROUPS, description ="Comma-separated list of group names to "
2838597c83f2ebe77ef4df9a62251613a2a279a470Cédric Beust      + " exclude")
298085805131c76156b59d12987d1593beed7a184dCédric Beust  public String excludedGroups;
3063341f94f2487441bb8487e67b97a81a0a9b5fd8nullin
3155cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String OUTPUT_DIRECTORY = "-d";
3255cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = OUTPUT_DIRECTORY, description ="Output directory")
338085805131c76156b59d12987d1593beed7a184dCédric Beust  public String outputDirectory;
3463341f94f2487441bb8487e67b97a81a0a9b5fd8nullin
3555cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String JUNIT = "-junit";
3655cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = JUNIT, description ="JUnit mode")
378085805131c76156b59d12987d1593beed7a184dCédric Beust  public Boolean junit = Boolean.FALSE;
38ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
391876355ae9a570f93b2222d9d03599712d732ca1Lukas Jungmann  public static final String MIXED = "-mixed";
401876355ae9a570f93b2222d9d03599712d732ca1Lukas Jungmann  @Parameter(names = MIXED, description ="Mixed mode - autodetect the type of current test" +
411876355ae9a570f93b2222d9d03599712d732ca1Lukas Jungmann      " and run it with appropriate runner")
421876355ae9a570f93b2222d9d03599712d732ca1Lukas Jungmann  public Boolean mixed = Boolean.FALSE;
431876355ae9a570f93b2222d9d03599712d732ca1Lukas Jungmann
4455cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String LISTENER = "-listener";
4555cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = LISTENER, description = "List of .class files or list of class names" +
46ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust      " implementing ITestListener or ISuiteListener")
478085805131c76156b59d12987d1593beed7a184dCédric Beust  public String listener;
48ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
4955cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String METHOD_SELECTORS = "-methodselectors";
5055cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = METHOD_SELECTORS, description = "List of .class files or list of class " +
5163341f94f2487441bb8487e67b97a81a0a9b5fd8nullin        "names implementing IMethodSelector")
528085805131c76156b59d12987d1593beed7a184dCédric Beust  public String methodSelectors;
53ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
5455cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String OBJECT_FACTORY = "-objectfactory";
5555cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = OBJECT_FACTORY, description = "List of .class files or list of class " +
5663341f94f2487441bb8487e67b97a81a0a9b5fd8nullin        "names implementing ITestRunnerFactory")
578085805131c76156b59d12987d1593beed7a184dCédric Beust  public String objectFactory;
58ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
5955cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String PARALLEL= "-parallel";
6055cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = PARALLEL, description = "Parallel mode (methods, tests or classes)")
6189801bb69bb57d6836189c381ad4950b29534c4cJulien Herr  public XmlSuite.ParallelMode parallelMode;
6263341f94f2487441bb8487e67b97a81a0a9b5fd8nullin
6355cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String CONFIG_FAILURE_POLICY = "-configfailurepolicy";
6455cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = CONFIG_FAILURE_POLICY , description = "Configuration failure policy (skip or continue)")
6562a82c6aa5725c9e9d600af5ee06a5852100208cnullin  public String configFailurePolicy;
66ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
6755cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String THREAD_COUNT = "-threadcount";
6855cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = THREAD_COUNT, description = "Number of threads to use when running tests " +
69ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust      "in parallel")
708085805131c76156b59d12987d1593beed7a184dCédric Beust  public Integer threadCount;
71ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
7255cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String DATA_PROVIDER_THREAD_COUNT = "-dataproviderthreadcount";
7355cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = DATA_PROVIDER_THREAD_COUNT, description = "Number of threads to use when " +
748085805131c76156b59d12987d1593beed7a184dCédric Beust      "running data providers")
758085805131c76156b59d12987d1593beed7a184dCédric Beust  public Integer dataProviderThreadCount;
76ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
7755cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String SUITE_NAME = "-suitename";
7855cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = SUITE_NAME, description = "Default name of test suite, if not specified " +
79ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust      "in suite definition file or source code")
808085805131c76156b59d12987d1593beed7a184dCédric Beust  public String suiteName;
81ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
8255cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String TEST_NAME = "-testname";
8355cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = TEST_NAME, description = "Default name of test, if not specified in suite" +
84ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust      "definition file or source code")
858085805131c76156b59d12987d1593beed7a184dCédric Beust  public String testName;
86ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
8755cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String REPORTER = "-reporter";
8855cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = REPORTER, description = "Extended configuration for custom report listener")
898085805131c76156b59d12987d1593beed7a184dCédric Beust  public String reporter;
90ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
9155cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String USE_DEFAULT_LISTENERS = "-usedefaultlisteners";
9255cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = USE_DEFAULT_LISTENERS, description = "Whether to use the default listeners")
9307b4d658cfb41946eb7785ffec5f04a488161f79Cédric Beust  public String useDefaultListeners = "true";
948085805131c76156b59d12987d1593beed7a184dCédric Beust
955626b136bcb854e723114aaf5658164034081063Cédric Beust  public static final String SKIP_FAILED_INVOCATION_COUNTS = "-skipfailedinvocationcounts";
965626b136bcb854e723114aaf5658164034081063Cédric Beust  @Parameter(names = SKIP_FAILED_INVOCATION_COUNTS, hidden = true)
978085805131c76156b59d12987d1593beed7a184dCédric Beust  public Boolean skipFailedInvocationCounts;
988085805131c76156b59d12987d1593beed7a184dCédric Beust
9955cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String TEST_CLASS = "-testclass";
10055cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = TEST_CLASS, description = "The list of test classes")
1018085805131c76156b59d12987d1593beed7a184dCédric Beust  public String testClass;
1028085805131c76156b59d12987d1593beed7a184dCédric Beust
10355cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String TEST_NAMES = "-testnames";
10455cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = TEST_NAMES, description = "The list of test names to run")
1058085805131c76156b59d12987d1593beed7a184dCédric Beust  public String testNames;
1068085805131c76156b59d12987d1593beed7a184dCédric Beust
10755cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String TEST_JAR = "-testjar";
10855cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = TEST_JAR, description = "A jar file containing the tests")
1098085805131c76156b59d12987d1593beed7a184dCédric Beust  public String testJar;
110ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
1118ad7bc9b3e59f16cad1aa4f7d74ddc2ef16de807Cédric Beust  public static final String XML_PATH_IN_JAR = "-xmlpathinjar";
1128ad7bc9b3e59f16cad1aa4f7d74ddc2ef16de807Cédric Beust  public static final String XML_PATH_IN_JAR_DEFAULT = "testng.xml";
1138ad7bc9b3e59f16cad1aa4f7d74ddc2ef16de807Cédric Beust  @Parameter(names = XML_PATH_IN_JAR, description = "The full path to the xml file inside the jar file (only valid if -testjar was specified)")
1148ad7bc9b3e59f16cad1aa4f7d74ddc2ef16de807Cédric Beust  public String xmlPathInJar = XML_PATH_IN_JAR_DEFAULT;
1158ad7bc9b3e59f16cad1aa4f7d74ddc2ef16de807Cédric Beust
1161764d0119a429f4b6cef56136f8e774edd6f31aeCédric Beust  public static final String TEST_RUNNER_FACTORY = "-testrunfactory";
1171764d0119a429f4b6cef56136f8e774edd6f31aeCédric Beust  @Parameter(names = { TEST_RUNNER_FACTORY, "-testRunFactory" },
1181764d0119a429f4b6cef56136f8e774edd6f31aeCédric Beust      description = "The factory used to create tests")
119ebadb61b818627fe0e9de16896c2e3215bcb0328Cédric Beust  public String testRunnerFactory;
120ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
12155cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String PORT = "-port";
12255cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = PORT, description = "The port")
1238085805131c76156b59d12987d1593beed7a184dCédric Beust  public Integer port;
124ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
12555cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String HOST = "-host";
126be0d782fd06c54164341ab7f28868f1819d8021aCédric Beust  @Parameter(names = HOST, description = "The host", hidden = true)
1278085805131c76156b59d12987d1593beed7a184dCédric Beust  public String host;
128ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
12955cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String MASTER = "-master";
130be0d782fd06c54164341ab7f28868f1819d8021aCédric Beust  @Parameter(names = MASTER, description = "Host where the master is", hidden = true)
1318085805131c76156b59d12987d1593beed7a184dCédric Beust  public String master;
132ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
13355cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String SLAVE = "-slave";
134be0d782fd06c54164341ab7f28868f1819d8021aCédric Beust  @Parameter(names = SLAVE, description = "Host where the slave is", hidden = true)
1358085805131c76156b59d12987d1593beed7a184dCédric Beust  public String slave;
136ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust
13755cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  public static final String METHODS = "-methods";
13855cd8fe791efec01c80a0199de9d187d2c836801Cédric Beust  @Parameter(names = METHODS, description = "Comma separated of test methods",
1398d66b5b025416a08ee2ef9072dca52ea0995b0b5Cédric Beust      splitter = CommaParameterSplitter.class)
14010c223b7aa6bf34778079bb5ee1a494c83cd1239Ryan Schmitt  public List<String> commandLineMethods = new ArrayList<>();
141687eae6b91d5695225aa4e989687fdac5ff050a4Cédric Beust
142687eae6b91d5695225aa4e989687fdac5ff050a4Cédric Beust  public static final String SUITE_THREAD_POOL_SIZE = "-suitethreadpoolsize";
143687eae6b91d5695225aa4e989687fdac5ff050a4Cédric Beust  public static final Integer SUITE_THREAD_POOL_SIZE_DEFAULT = 1;
144687eae6b91d5695225aa4e989687fdac5ff050a4Cédric Beust  @Parameter(names = SUITE_THREAD_POOL_SIZE, description = "Size of the thread pool to use"
14563341f94f2487441bb8487e67b97a81a0a9b5fd8nullin        + " to run suites")
146687eae6b91d5695225aa4e989687fdac5ff050a4Cédric Beust  public Integer suiteThreadPoolSize = SUITE_THREAD_POOL_SIZE_DEFAULT;
147fcfd8ccf5312966160cb07db5502e88265910deanullin
148fcfd8ccf5312966160cb07db5502e88265910deanullin  public static final String RANDOMIZE_SUITES = "-randomizesuites";
149fcfd8ccf5312966160cb07db5502e88265910deanullin  @Parameter(names = RANDOMIZE_SUITES, hidden = true,
150fcfd8ccf5312966160cb07db5502e88265910deanullin      description = "Whether to run suites in same order as specified in XML or not")
1515c83f94d8ab458c24597d02814d75cf247d2b0e5nullin  public Boolean randomizeSuites = Boolean.FALSE;
152aae11d5eb8df906691ce4517a6c59a6bc388be00Cédric Beust
153aae11d5eb8df906691ce4517a6c59a6bc388be00Cédric Beust  public static final String DEBUG = "-debug";
154aae11d5eb8df906691ce4517a6c59a6bc388be00Cédric Beust  @Parameter(names = DEBUG, hidden = true, description = "Used to debug TestNG")
155aae11d5eb8df906691ce4517a6c59a6bc388be00Cédric Beust  public Boolean debug = Boolean.FALSE;
1568ad7bc9b3e59f16cad1aa4f7d74ddc2ef16de807Cédric Beust
157ecb4654924bf8f42f32292f250bc6300f52b8fe6Cédric Beust}
158