diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-08-17 18:46:20 +0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-08-17 21:55:03 +0800 |
commit | 6220c78031c8459be46d408242deb3865d4719a8 (patch) | |
tree | a1fd81cf8df5e20f8af48e6b4d37c69badc4bde0 /contrib/testng/src/mill/testng/TestNGRunner.java | |
parent | 16e67cb248ba96fc3722561bcadbba27a2779a03 (diff) | |
download | mill-6220c78031c8459be46d408242deb3865d4719a8.tar.gz mill-6220c78031c8459be46d408242deb3865d4719a8.tar.bz2 mill-6220c78031c8459be46d408242deb3865d4719a8.zip |
tidy up root folder
Diffstat (limited to 'contrib/testng/src/mill/testng/TestNGRunner.java')
-rw-r--r-- | contrib/testng/src/mill/testng/TestNGRunner.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/contrib/testng/src/mill/testng/TestNGRunner.java b/contrib/testng/src/mill/testng/TestNGRunner.java new file mode 100644 index 00000000..0ad05f76 --- /dev/null +++ b/contrib/testng/src/mill/testng/TestNGRunner.java @@ -0,0 +1,76 @@ +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; + CommandLineArgs cliArgs; + public TestNGTask(TaskDef taskDef, + TestNGRunner runner, + CommandLineArgs cliArgs){ + this.taskDef = taskDef; + this.runner = runner; + this.cliArgs = cliArgs; + } + + @Override + public String[] tags() { + return new String[0]; + } + + @Override + public Task[] execute(EventHandler eventHandler, Logger[] loggers) { + new TestNGInstance( + loggers, + runner.testClassLoader, + cliArgs, + eventHandler + ).run(); + return new Task[0]; + } + + @Override + public TaskDef taskDef() { + return taskDef; + } +} + +public class TestNGRunner implements Runner { + ClassLoader testClassLoader; + String[] args; + String[] remoteArgs; + public TestNGRunner(String[] args, String[] remoteArgs, ClassLoader testClassLoader) { + this.testClassLoader = testClassLoader; + this.args = args; + this.remoteArgs = remoteArgs; + } + + public Task[] tasks(TaskDef[] taskDefs) { + 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); + } + if (taskDefs.length == 0) return new Task[]{}; + else return new Task[]{new TestNGTask(taskDefs[0], this, cliArgs)}; + } + + public String done() { return null; } + + public String[] remoteArgs() { return remoteArgs; } + + public String[] args() { return args; } +} |