summaryrefslogtreecommitdiff
path: root/contrib/testng/src/mill/testng/TestNGInstance.java
blob: 4cf274d3bd1d3261714290ceeb4326b36bf3c0a5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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);
    }
}