diff options
Diffstat (limited to 'testng/src/mill/testng/TestNGRunner.java')
-rw-r--r-- | testng/src/mill/testng/TestNGRunner.java | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/testng/src/mill/testng/TestNGRunner.java b/testng/src/mill/testng/TestNGRunner.java index 29ebb7dd..0ad05f76 100644 --- a/testng/src/mill/testng/TestNGRunner.java +++ b/testng/src/mill/testng/TestNGRunner.java @@ -1,17 +1,25 @@ package mill.testng; +import com.beust.jcommander.JCommander; +import org.testng.CommandLineArgs; import sbt.testing.*; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.List; class TestNGTask implements Task { TaskDef taskDef; TestNGRunner runner; - public TestNGTask(TaskDef taskDef, TestNGRunner runner){ + CommandLineArgs cliArgs; + public TestNGTask(TaskDef taskDef, + TestNGRunner runner, + CommandLineArgs cliArgs){ this.taskDef = taskDef; this.runner = runner; + this.cliArgs = cliArgs; } @Override @@ -21,12 +29,10 @@ class TestNGTask implements Task { @Override public Task[] execute(EventHandler eventHandler, Logger[] loggers) { - System.out.println("Executing " + taskDef.fullyQualifiedName()); new TestNGInstance( loggers, runner.testClassLoader, - runner.args(), - taskDef.fullyQualifiedName(), + cliArgs, eventHandler ).run(); return new Task[0]; @@ -49,12 +55,17 @@ public class TestNGRunner implements Runner { } public Task[] tasks(TaskDef[] taskDefs) { - System.out.println("TestNGRunner#tasks " + Arrays.toString(taskDefs)); - Task[] out = new Task[taskDefs.length]; - for (int i = 0; i < taskDefs.length; i += 1) { - out[i] = new TestNGTask(taskDefs[i], this); + CommandLineArgs cliArgs = new CommandLineArgs(); + new JCommander(cliArgs, args); // args is an output parameter of the constructor! + if(cliArgs.testClass == null){ + String[] names = new String[taskDefs.length]; + for(int i = 0; i < taskDefs.length; i += 1){ + names[i] = taskDefs[i].fullyQualifiedName(); + } + cliArgs.testClass = String.join(",", names); } - return out; + if (taskDefs.length == 0) return new Task[]{}; + else return new Task[]{new TestNGTask(taskDefs[0], this, cliArgs)}; } public String done() { return null; } |