You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2019/05/19 21:08:38 UTC
[netbeans] 01/04: [NETBEANS-2527] Update TestSuites in a Gradle
Test Run upon completion.
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 <la...@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-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists