From 9ba4cb69331386dfde9bac69dc2d5b22401face3 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Wed, 12 Dec 2018 16:56:02 -0800 Subject: collapse boilerplate folder structure within src/ folders (#505) * collapse boilerplate folder structure within src/ folders * . --- contrib/testng/src/ResultEvent.java | 45 +++++++++++++ contrib/testng/src/TestNGFramework.java | 25 +++++++ contrib/testng/src/TestNGInstance.java | 67 +++++++++++++++++++ contrib/testng/src/TestNGRunner.java | 76 ++++++++++++++++++++++ contrib/testng/src/mill/testng/ResultEvent.java | 45 ------------- .../testng/src/mill/testng/TestNGFramework.java | 25 ------- contrib/testng/src/mill/testng/TestNGInstance.java | 67 ------------------- contrib/testng/src/mill/testng/TestNGRunner.java | 76 ---------------------- 8 files changed, 213 insertions(+), 213 deletions(-) create mode 100644 contrib/testng/src/ResultEvent.java create mode 100644 contrib/testng/src/TestNGFramework.java create mode 100644 contrib/testng/src/TestNGInstance.java create mode 100644 contrib/testng/src/TestNGRunner.java delete mode 100644 contrib/testng/src/mill/testng/ResultEvent.java delete mode 100644 contrib/testng/src/mill/testng/TestNGFramework.java delete mode 100644 contrib/testng/src/mill/testng/TestNGInstance.java delete mode 100644 contrib/testng/src/mill/testng/TestNGRunner.java (limited to 'contrib/testng/src') diff --git a/contrib/testng/src/ResultEvent.java b/contrib/testng/src/ResultEvent.java new file mode 100644 index 00000000..6e2a50d6 --- /dev/null +++ b/contrib/testng/src/ResultEvent.java @@ -0,0 +1,45 @@ + +package mill.testng; + +import sbt.testing.*; +import org.testng.ITestResult; + +public class ResultEvent { + static Event failure(ITestResult result){ return event(Status.Failure, result); } + static Event skipped(ITestResult result){ return event(Status.Skipped, result); } + static Event success(ITestResult result){ return event(Status.Success, result); } + + static Event event(Status result, ITestResult testNGResult) { + return new Event() { + public String fullyQualifiedName() { + return testNGResult.getTestClass().getName(); + } + + public Fingerprint fingerprint() { + return TestNGFingerprint.instance; + } + + public Selector selector() { + return new SuiteSelector(); + } + + public Status status() { + return result; + } + + public OptionalThrowable throwable() { + if (result != Status.Success){ + return new OptionalThrowable(testNGResult.getThrowable()); + }else { + return new OptionalThrowable(); + } + } + + @Override + public long duration() { + return testNGResult.getEndMillis() - testNGResult.getStartMillis(); + } + }; + } + static String classNameOf(ITestResult result){ return result.getTestClass().getName(); } +} \ No newline at end of file diff --git a/contrib/testng/src/TestNGFramework.java b/contrib/testng/src/TestNGFramework.java new file mode 100644 index 00000000..6e993fcc --- /dev/null +++ b/contrib/testng/src/TestNGFramework.java @@ -0,0 +1,25 @@ +package mill.testng; + + + +import sbt.testing.*; + + +public class TestNGFramework implements Framework { + public String name(){ return "TestNG"; } + + public Fingerprint[] fingerprints() { + return new Fingerprint[]{TestNGFingerprint.instance}; + } + + @Override + public Runner runner(String[] args, String[] remoteArgs, ClassLoader classLoader) { + return new TestNGRunner(args, remoteArgs, classLoader); + } +} + +class TestNGFingerprint implements AnnotatedFingerprint{ + final public static TestNGFingerprint instance = new TestNGFingerprint(); + public String annotationName(){return "org.testng.annotations.Test";} + public boolean isModule(){return false;} +} diff --git a/contrib/testng/src/TestNGInstance.java b/contrib/testng/src/TestNGInstance.java new file mode 100644 index 00000000..4cf274d3 --- /dev/null +++ b/contrib/testng/src/TestNGInstance.java @@ -0,0 +1,67 @@ +package mill.testng; + + +import org.testng.*; +import sbt.testing.EventHandler; +import sbt.testing.Logger; + +import com.beust.jcommander.JCommander; + +import java.net.URLClassLoader; +import java.util.Arrays; + +class TestNGListener implements ITestListener{ + EventHandler basket; + String lastName = ""; + public TestNGListener(EventHandler basket){ + this.basket = basket; + } + public void onTestStart(ITestResult iTestResult) { + String newName = iTestResult.getTestClass().getName() + " " + iTestResult.getName() + " "; + if(!newName.equals(lastName)){ + if (!lastName.equals("")){ + System.out.println(); + } + lastName = newName; + System.out.print(lastName); + } + } + + public void onTestSuccess(ITestResult iTestResult) { + System.out.print('+'); + basket.handle(ResultEvent.success(iTestResult)); + } + + public void onTestFailure(ITestResult iTestResult) { + System.out.print('X'); + basket.handle(ResultEvent.failure(iTestResult)); + } + + public void onTestSkipped(ITestResult iTestResult) { + System.out.print('-'); + basket.handle(ResultEvent.skipped(iTestResult)); + } + + public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) { + basket.handle(ResultEvent.failure(iTestResult)); + } + + public void onStart(ITestContext iTestContext) {} + + public void onFinish(ITestContext iTestContext) {} +} + +public class TestNGInstance extends TestNG{ + public TestNGInstance(Logger[] loggers, + ClassLoader testClassLoader, + CommandLineArgs args, + EventHandler eventHandler) { + addClassLoader(testClassLoader); + + this.addListener(new TestNGListener(eventHandler)); + + configure(args); + } +} + + diff --git a/contrib/testng/src/TestNGRunner.java b/contrib/testng/src/TestNGRunner.java new file mode 100644 index 00000000..0ad05f76 --- /dev/null +++ b/contrib/testng/src/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; } +} diff --git a/contrib/testng/src/mill/testng/ResultEvent.java b/contrib/testng/src/mill/testng/ResultEvent.java deleted file mode 100644 index 6e2a50d6..00000000 --- a/contrib/testng/src/mill/testng/ResultEvent.java +++ /dev/null @@ -1,45 +0,0 @@ - -package mill.testng; - -import sbt.testing.*; -import org.testng.ITestResult; - -public class ResultEvent { - static Event failure(ITestResult result){ return event(Status.Failure, result); } - static Event skipped(ITestResult result){ return event(Status.Skipped, result); } - static Event success(ITestResult result){ return event(Status.Success, result); } - - static Event event(Status result, ITestResult testNGResult) { - return new Event() { - public String fullyQualifiedName() { - return testNGResult.getTestClass().getName(); - } - - public Fingerprint fingerprint() { - return TestNGFingerprint.instance; - } - - public Selector selector() { - return new SuiteSelector(); - } - - public Status status() { - return result; - } - - public OptionalThrowable throwable() { - if (result != Status.Success){ - return new OptionalThrowable(testNGResult.getThrowable()); - }else { - return new OptionalThrowable(); - } - } - - @Override - public long duration() { - return testNGResult.getEndMillis() - testNGResult.getStartMillis(); - } - }; - } - static String classNameOf(ITestResult result){ return result.getTestClass().getName(); } -} \ No newline at end of file diff --git a/contrib/testng/src/mill/testng/TestNGFramework.java b/contrib/testng/src/mill/testng/TestNGFramework.java deleted file mode 100644 index 6e993fcc..00000000 --- a/contrib/testng/src/mill/testng/TestNGFramework.java +++ /dev/null @@ -1,25 +0,0 @@ -package mill.testng; - - - -import sbt.testing.*; - - -public class TestNGFramework implements Framework { - public String name(){ return "TestNG"; } - - public Fingerprint[] fingerprints() { - return new Fingerprint[]{TestNGFingerprint.instance}; - } - - @Override - public Runner runner(String[] args, String[] remoteArgs, ClassLoader classLoader) { - return new TestNGRunner(args, remoteArgs, classLoader); - } -} - -class TestNGFingerprint implements AnnotatedFingerprint{ - final public static TestNGFingerprint instance = new TestNGFingerprint(); - public String annotationName(){return "org.testng.annotations.Test";} - public boolean isModule(){return false;} -} diff --git a/contrib/testng/src/mill/testng/TestNGInstance.java b/contrib/testng/src/mill/testng/TestNGInstance.java deleted file mode 100644 index 4cf274d3..00000000 --- a/contrib/testng/src/mill/testng/TestNGInstance.java +++ /dev/null @@ -1,67 +0,0 @@ -package mill.testng; - - -import org.testng.*; -import sbt.testing.EventHandler; -import sbt.testing.Logger; - -import com.beust.jcommander.JCommander; - -import java.net.URLClassLoader; -import java.util.Arrays; - -class TestNGListener implements ITestListener{ - EventHandler basket; - String lastName = ""; - public TestNGListener(EventHandler basket){ - this.basket = basket; - } - public void onTestStart(ITestResult iTestResult) { - String newName = iTestResult.getTestClass().getName() + " " + iTestResult.getName() + " "; - if(!newName.equals(lastName)){ - if (!lastName.equals("")){ - System.out.println(); - } - lastName = newName; - System.out.print(lastName); - } - } - - public void onTestSuccess(ITestResult iTestResult) { - System.out.print('+'); - basket.handle(ResultEvent.success(iTestResult)); - } - - public void onTestFailure(ITestResult iTestResult) { - System.out.print('X'); - basket.handle(ResultEvent.failure(iTestResult)); - } - - public void onTestSkipped(ITestResult iTestResult) { - System.out.print('-'); - basket.handle(ResultEvent.skipped(iTestResult)); - } - - public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) { - basket.handle(ResultEvent.failure(iTestResult)); - } - - public void onStart(ITestContext iTestContext) {} - - public void onFinish(ITestContext iTestContext) {} -} - -public class TestNGInstance extends TestNG{ - public TestNGInstance(Logger[] loggers, - ClassLoader testClassLoader, - CommandLineArgs args, - EventHandler eventHandler) { - addClassLoader(testClassLoader); - - this.addListener(new TestNGListener(eventHandler)); - - configure(args); - } -} - - diff --git a/contrib/testng/src/mill/testng/TestNGRunner.java b/contrib/testng/src/mill/testng/TestNGRunner.java deleted file mode 100644 index 0ad05f76..00000000 --- a/contrib/testng/src/mill/testng/TestNGRunner.java +++ /dev/null @@ -1,76 +0,0 @@ -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; } -} -- cgit v1.2.3