This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch release110-gradle-patch-1 in repository https://gitbox.apache.org/repos/asf/netbeans.git
commit 5397f3d9cab27bb4c996cd2c763e7a91c87fd340 Author: Laszlo Kishalmi <laszlo.kisha...@gmail.com> AuthorDate: Sat May 18 09:25:32 2019 -0700 [NETBEANS-2527] Update TestSuites in a Gradle Test Run upon completion. --- .../gradle/test/GradleTestProgressListener.java | 52 ++++++++++------------ .../modules/gradle/test/GradleTestSuite.java | 45 ++++++++++++++++--- 2 files changed, 64 insertions(+), 33 deletions(-) diff --git a/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestProgressListener.java b/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestProgressListener.java index 383ba7c..ce2f76d 100644 --- a/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestProgressListener.java +++ b/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestProgressListener.java @@ -23,9 +23,9 @@ import org.netbeans.modules.gradle.api.NbGradleProject; import java.util.Collection; import org.netbeans.modules.gradle.spi.GradleProgressListenerProvider; import java.util.EnumSet; -import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.gradle.tooling.Failure; @@ -57,11 +57,12 @@ import org.openide.util.Lookup; * @author Laszlo Kishalmi */ @ProjectServiceProvider(service = GradleProgressListenerProvider.class, projectType = NbGradleProject.GRADLE_PLUGIN_TYPE + "/java") -public class GradleTestProgressListener implements ProgressListener, GradleProgressListenerProvider { +public final class GradleTestProgressListener implements ProgressListener, GradleProgressListenerProvider { final private Project project; TestSession session; - Map<String, Testcase> runningTests = new HashMap<>(); + + Map<String, Testcase> runningTests = new ConcurrentHashMap<>(); public GradleTestProgressListener(Project project) { this.project = project; @@ -125,47 +126,42 @@ public class GradleTestProgressListener implements ProgressListener, GradleProgr } private void sessionFinish(TestFinishEvent evt) { - TestOperationResult result = evt.getResult(); - Report report = session.getReport(result.getEndTime() - result.getStartTime()); + runningTests.clear(); CoreManager manager = getManager(); if (manager != null) { manager.sessionFinished(session); - manager.displayReport(session, report, true); - manager.sessionFinished(session); } } private void suiteStart(TestStartEvent evt, JvmTestOperationDescriptor op) { - if (op.getClassName() != null) { - TestSuite suite = new GradleTestSuite(op); - session.addSuite(suite); + } + + private void suiteFinish(TestFinishEvent evt, JvmTestOperationDescriptor op) { + TestOperationResult result = evt.getResult(); + TestSuite currentSuite = session.getCurrentSuite(); + String suiteName = GradleTestSuite.suiteName(op); + if (suiteName.equals(currentSuite.getName())) { + Report report = session.getReport(result.getEndTime() - result.getStartTime()); CoreManager manager = getManager(); if (manager != null) { - manager.displaySuiteRunning(session, suite); + manager.displayReport(session, report, true); } } } - private void suiteFinish(TestFinishEvent evt, JvmTestOperationDescriptor op) { - - } - private void caseStart(TestStartEvent evt, JvmTestOperationDescriptor op) { - Testcase tc = new GradleTestcase(op, session); - if (op.getSuiteName() == null) { - // Sometimes it is possible to receive testcase execution events - // without suite. It is common with TestNG - TestSuite currentSuite = session.getCurrentSuite(); - if ((currentSuite == null) || !currentSuite.getName().equals(op.getClassName())) { - TestSuite suite = new GradleTestSuite(op); - session.addSuite(suite); - CoreManager manager = getManager(); - if (manager != null) { - manager.displaySuiteRunning(session, suite); - } + assert session != null; + assert op.getParent() != null; + TestSuite currentSuite = session.getCurrentSuite(); + TestSuite newSuite = new GradleTestSuite((JvmTestOperationDescriptor) op.getParent()); + if ((currentSuite == null) || !currentSuite.equals(newSuite)) { + session.addSuite(newSuite); + CoreManager manager = getManager(); + if (manager != null) { + manager.displaySuiteRunning(session, newSuite); } } - tc.setClassName(op.getClassName()); + Testcase tc = new GradleTestcase(op, session); runningTests.put(getTestOpKey(op), tc); session.addTestCase(tc); } diff --git a/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestSuite.java b/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestSuite.java index 68e0144..4834d35 100644 --- a/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestSuite.java +++ b/groovy/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestSuite.java @@ -19,6 +19,8 @@ package org.netbeans.modules.gradle.test; +import java.util.Objects; +import org.gradle.tooling.events.OperationDescriptor; import org.gradle.tooling.events.test.JvmTestOperationDescriptor; import org.netbeans.modules.gsf.testrunner.api.TestSuite; @@ -26,17 +28,50 @@ import org.netbeans.modules.gsf.testrunner.api.TestSuite; * * @author Laszlo Kishalmi */ -public class GradleTestSuite extends TestSuite { - +public final class GradleTestSuite extends TestSuite { + private final JvmTestOperationDescriptor operation; - + public GradleTestSuite(JvmTestOperationDescriptor op) { - super(op.getClassName()); + super(suiteName(op)); this.operation = op; } public JvmTestOperationDescriptor getOperation() { return operation; } - + + @Override + public int hashCode() { + int hash = 3; + hash = 29 * hash + Objects.hashCode(this.operation); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final GradleTestSuite other = (GradleTestSuite) obj; + return Objects.equals(this.getName(), other.getName()); + } + + static String suiteName(OperationDescriptor op) { + assert op != null; + + if (op instanceof JvmTestOperationDescriptor) { + JvmTestOperationDescriptor desc = (JvmTestOperationDescriptor)op; + return desc.getSuiteName() != null ? desc.getSuiteName() : desc.getClassName(); + } else { + return op.getDisplayName() != null ? op.getDisplayName() : op.getName(); + } + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists