1bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustpackage test.commandline;
2bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust
3bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustimport org.testng.TestListenerAdapter;
4bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustimport org.testng.TestNG;
5bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustimport org.testng.annotations.Test;
6bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustimport org.testng.xml.XmlSuite;
7bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustimport org.testng.xml.XmlTest;
8bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust
9bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustimport test.SimpleBaseTest;
10bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust
11bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustimport java.util.Arrays;
12bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustimport java.util.List;
13bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust
14bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beustpublic class CommandLineOverridesXml extends SimpleBaseTest {
15bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust
16bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  @Test(description = "Specifying -groups on the command line should override testng.xml")
17bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  public void commandLineGroupsShouldOverrideXml() {
18bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    runTest("go", null, Arrays.asList(new String[] { "f2" }));
19bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  }
20bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust
21bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  @Test(description = "Specifying -excludegroups on the command line should override testng.xml")
22bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  public void commandLineExcludedGroupsShouldOverrideXml() {
23bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    runTest(null, "go", Arrays.asList(new String[] { "f1" }));
24bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  }
25bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust
26bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  @Test
27bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  public void shouldRunBothMethods() {
28bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    runTest(null, null, Arrays.asList(new String[] { "f1", "f2" }));
29bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  }
30bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust
31bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  private void runTest(String group, String excludedGroups, List<String> methods) {
32bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    XmlSuite s = createXmlSuite(getClass().getName());
33bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    XmlTest t = createXmlTest(s, "Test", OverrideSampleTest.class.getName());
34bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    TestNG tng = create();
35bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    if (group != null) tng.setGroups(group);
36bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    if (excludedGroups != null) tng.setExcludedGroups(excludedGroups);
37bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    tng.setXmlSuites(Arrays.asList(new XmlSuite[] { s }));
38bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    TestListenerAdapter tla = new TestListenerAdapter();
39bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    tng.addListener(tla);
40bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    tng.run();
41bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust
42bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust    assertTestResultsEqual(tla.getPassedTests(), methods);
43bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust  }
44bad9477b494317793938f1a5c4292cbf3fb72b32Cédric Beust}
45