Package org.netbeans.gradle.project.others.test

Source Code of org.netbeans.gradle.project.others.test.VisualNbGradleTestManager

package org.netbeans.gradle.project.others.test;

import org.jtrim.utils.ExceptionHelper;
import org.netbeans.api.project.Project;
import org.netbeans.modules.gsf.testrunner.api.Manager;
import org.netbeans.modules.gsf.testrunner.api.Report;
import org.netbeans.modules.gsf.testrunner.api.RerunHandler;
import org.netbeans.modules.gsf.testrunner.api.TestRunnerNodeFactory;
import org.netbeans.modules.gsf.testrunner.api.TestSession;
import org.netbeans.modules.gsf.testrunner.api.TestSuite;
import org.netbeans.modules.gsf.testrunner.api.Testcase;

public final class VisualNbGradleTestManager implements NbGradleTestManager {
    private final Manager manager;

    public VisualNbGradleTestManager() {
        this.manager = Manager.getInstance();
    }

    @Override
    public NbGradleTestSession startSession(
            String name,
            Project project,
            TestRunnerNodeFactory nodeFactory,
            RerunHandler rerunHandler) {

        ExceptionHelper.checkNotNullArgument(name, "name");
        ExceptionHelper.checkNotNullArgument(project, "project");

        TestSession session = nodeFactory != null
                ? new TestSession(name, project, TestSession.SessionType.TEST, nodeFactory)
                : new TestSession(name, project, TestSession.SessionType.TEST);
        // RerunHandler must be added right after creating the session
        // otherwise it will be ignore by the rerun buttons.
        if (rerunHandler != null) {
            session.setRerunHandler(rerunHandler);
        }
        manager.testStarted(session);

        return new NbGradleTestSessionImpl(manager, session);
    }

    private static final class NbGradleTestSessionImpl implements NbGradleTestSession {
        private final Manager manager;
        private final TestSession session;

        public NbGradleTestSessionImpl(Manager manager, TestSession session) {
            assert manager != null;
            assert session != null;

            this.manager = manager;
            this.session = session;
        }

        @Override
        public NbGradleTestSuite startTestSuite(String suiteName) {
            ExceptionHelper.checkNotNullArgument(suiteName, "suiteName");

            final TestSuite suite = new TestSuite(suiteName);
            session.addSuite(suite);
            manager.displaySuiteRunning(session, suite);

            return new NbGradleTestSuiteImpl(manager, session);
        }

        @Override
        public void endSession() {
            manager.sessionFinished(session);
        }
    }

    private static final class NbGradleTestSuiteImpl implements NbGradleTestSuite {
        private final Manager manager;
        private final TestSession session;
        private String stdOut;
        private String stdErr;

        public NbGradleTestSuiteImpl(Manager manager, TestSession session) {
            assert manager != null;
            assert session != null;

            this.manager = manager;
            this.session = session;

            this.stdErr = null;
            this.stdOut = null;
        }

        @Override
        public Testcase addTestcase(String name) {
            Testcase testcase = new Testcase(name, null, session);
            session.addTestCase(testcase);
            return testcase;
        }

        @Override
        public void setStdOut(String stdOut) {
            this.stdOut = stdOut;
        }

        @Override
        public void setStdErr(String stdErr) {
            this.stdErr = stdErr;
        }

        @Override
        public void endSuite(long elapsedTimeInMillis) {
            Report report = session.getReport(elapsedTimeInMillis);
            if (report != null) {
                if (stdErr != null) {
                    manager.displayOutput(session, stdErr, true);
                }
                if (stdOut != null) {
                    manager.displayOutput(session, stdOut, false);
                }
                manager.displayReport(session, report, true);
            }
        }
    }
}
TOP

Related Classes of org.netbeans.gradle.project.others.test.VisualNbGradleTestManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.