You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by sk...@apache.org on 2021/07/23 15:34:45 UTC
[netbeans] branch master updated: [NETBEANS-5863] "Test results"
spuriously clears tests during run and shows success despite failure +
fixed.
This is an automated email from the ASF dual-hosted git repository.
skygo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 64d1203 [NETBEANS-5863] "Test results" spuriously clears tests during run and shows success despite failure + fixed.
new f09836b Merge pull request #3072 from dbalek/dbalek/NETBEANS-5863
64d1203 is described below
commit 64d120338a6ea9b66d552dd489f642f5043d5178
Author: Dusan Balek <du...@oracle.com>
AuthorDate: Fri Jul 23 14:32:08 2021 +0200
[NETBEANS-5863] "Test results" spuriously clears tests during run and shows success despite failure + fixed.
---
.../gsf/testrunner/ui/ResultDisplayHandler.java | 93 +++++++++++++++++++---
.../modules/gsf/testrunner/ui/api/Manager.java | 22 +++--
.../ui/api/TestResultDisplayHandler.java | 13 ++-
3 files changed, 96 insertions(+), 32 deletions(-)
diff --git a/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/ResultDisplayHandler.java b/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/ResultDisplayHandler.java
index dd2a5f3..b82e742 100644
--- a/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/ResultDisplayHandler.java
+++ b/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/ResultDisplayHandler.java
@@ -23,6 +23,7 @@ import java.awt.Component;
import java.awt.EventQueue;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.lang.ref.WeakReference;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -52,7 +53,78 @@ import org.openide.windows.OutputWriter;
*
* @author Marian Petras. Erno Mononen
*/
-public final class ResultDisplayHandler implements TestResultDisplayHandler.Spi<ResultDisplayHandler> {
+public final class ResultDisplayHandler {
+
+ private static TestResultDisplayHandler.Spi<?> providerInstance = null;
+
+ public static TestResultDisplayHandler.Spi<?> getProvider() {
+ if (providerInstance == null) {
+ providerInstance = new ResultDisplayHandlerProvider();
+ }
+ return providerInstance;
+ }
+
+ private static class ResultDisplayHandlerProvider implements TestResultDisplayHandler.Spi<WeakReference<ResultDisplayHandler>> {
+
+ @Override
+ public WeakReference<ResultDisplayHandler> create(TestSession session) {
+ return new WeakReference<>(new ResultDisplayHandler(session));
+ }
+
+ @Override
+ public void displayOutput(WeakReference<ResultDisplayHandler> token, String text, boolean error) {
+ ResultDisplayHandler handler = token.get();
+ if (handler != null) {
+ handler.displayOutput(text, error);
+ }
+ }
+
+ @Override
+ public void displaySuiteRunning(WeakReference<ResultDisplayHandler> token, String suiteName) {
+ ResultDisplayHandler handler = token.get();
+ if (handler != null) {
+ handler.displaySuiteRunning(suiteName);
+ }
+ }
+
+ @Override
+ public void displaySuiteRunning(WeakReference<ResultDisplayHandler> token, TestSuite suite) {
+ ResultDisplayHandler handler = token.get();
+ if (handler != null) {
+ handler.displaySuiteRunning(suite);
+ }
+ }
+
+ @Override
+ public void displayReport(WeakReference<ResultDisplayHandler> token, Report report) {
+ ResultDisplayHandler handler = token.get();
+ if (handler != null) {
+ handler.displayReport(report);
+ }
+ }
+
+ @Override
+ public void displayMessage(WeakReference<ResultDisplayHandler> token, String message) {
+ ResultDisplayHandler handler = token.get();
+ if (handler != null) {
+ handler.displayMessage(message);
+ }
+ }
+
+ @Override
+ public void displayMessageSessionFinished(WeakReference<ResultDisplayHandler> token, String message) {
+ ResultDisplayHandler handler = token.get();
+ if (handler != null) {
+ handler.displayMessageSessionFinished(message);
+ }
+ }
+
+ @Override
+ public int getTotalTests(WeakReference<ResultDisplayHandler> token) {
+ ResultDisplayHandler handler = token.get();
+ return handler != null ? handler.getTotalTests() : 0;
+ }
+ }
private static final Logger LOGGER = Logger.getLogger(ResultDisplayHandler.class.getName());
@@ -119,7 +191,7 @@ public final class ResultDisplayHandler implements TestResultDisplayHandler.Spi<
dividerSettings.getLocation());
}
- public int getTotalTests(final ResultDisplayHandler token) {
+ public int getTotalTests() {
return statisticsPanel.getTreePanel().getTotalTests();
}
@@ -179,7 +251,7 @@ public final class ResultDisplayHandler implements TestResultDisplayHandler.Spi<
/**
*/
- public void displayOutput(final ResultDisplayHandler token, final String text, final boolean error) {
+ public void displayOutput(final String text, final boolean error) {
/* Called from the AntLogger's thread */
@@ -221,7 +293,7 @@ public final class ResultDisplayHandler implements TestResultDisplayHandler.Spi<
* @param suiteName name of the running suite; or {@code null} in the case
* of anonymous suite
*/
- public void displaySuiteRunning(final ResultDisplayHandler token, String suiteName) {
+ public void displaySuiteRunning(String suiteName) {
synchronized (this) {
@@ -241,7 +313,7 @@ public final class ResultDisplayHandler implements TestResultDisplayHandler.Spi<
*
* @param suite name of the running suite
*/
- public void displaySuiteRunning(final ResultDisplayHandler token, TestSuite suite) {
+ public void displaySuiteRunning(TestSuite suite) {
synchronized (this) {
assert runningSuite == null;
suite = (suite != null) ? suite : TestSuite.ANONYMOUS_TEST_SUITE;
@@ -255,7 +327,7 @@ public final class ResultDisplayHandler implements TestResultDisplayHandler.Spi<
/**
*/
- public void displayReport(final ResultDisplayHandler token, final Report report) {
+ public void displayReport(final Report report) {
synchronized (this) {
if (treePanel == null) {
@@ -273,7 +345,7 @@ public final class ResultDisplayHandler implements TestResultDisplayHandler.Spi<
/**
*/
- public void displayMessage(final ResultDisplayHandler token, final String msg) {
+ public void displayMessage(final String msg) {
/* Called from the AntLogger's thread */
@@ -290,7 +362,7 @@ public final class ResultDisplayHandler implements TestResultDisplayHandler.Spi<
/**
*/
- public void displayMessageSessionFinished(final ResultDisplayHandler token, final String msg) {
+ public void displayMessageSessionFinished(final String msg) {
/* Called from the AntLogger's thread */
@@ -396,9 +468,4 @@ public final class ResultDisplayHandler implements TestResultDisplayHandler.Spi<
Lookup getLookup() {
return l;
}
-
- @Override
- public ResultDisplayHandler create(TestSession session) {
- return null;
- }
}
diff --git a/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/api/Manager.java b/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/api/Manager.java
index 2a8cca7..513ee43 100644
--- a/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/api/Manager.java
+++ b/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/api/Manager.java
@@ -260,6 +260,7 @@ public final class Manager {
LOGGER.log(Level.FINE, "Finishing session: " + session);
}
+ displayHandlers.remove(session);
testSessions.remove(session); //must be after displayMessage(...)
//otherwise the window would get
//activated
@@ -465,7 +466,7 @@ public final class Manager {
/** singleton of the <code>ResultDisplayHandler</code> */
// the ResultDisplayHandler holds TestSession and is referenced from other
// places so we use WeakReference, otherwise there would be memory leak
- private Map<TestSession,WeakReference<TestResultDisplayHandler>> displayHandlers;
+ private Map<TestSession,TestResultDisplayHandler> displayHandlers;
private Semaphore lock;
/**
*/
@@ -475,20 +476,17 @@ public final class Manager {
assert session != null : Bundle.Null_Session_Error();
TestResultDisplayHandler displayHandler = null;
if (displayHandlers != null) {
- WeakReference<TestResultDisplayHandler> reference = displayHandlers.get(session);
- if (reference != null) {
- displayHandler = reference.get();
- }
+ displayHandler = displayHandlers.get(session);
} else {
- displayHandlers = new WeakHashMap<TestSession,WeakReference<TestResultDisplayHandler>>(7);
+ displayHandlers = new WeakHashMap<TestSession,TestResultDisplayHandler>(7);
}
if (displayHandler == null) {
displayHandler = TestResultDisplayHandler.create(session);
- displayHandlers.put(session, new WeakReference<TestResultDisplayHandler>(displayHandler));
- TestResultDisplayHandler.Spi handlerSpi = displayHandler.getSpi();
- if (handlerSpi instanceof ResultDisplayHandler) {
- createIO((ResultDisplayHandler)handlerSpi);
+ displayHandlers.put(session, displayHandler);
+ Object handlerToken = displayHandler.getToken() instanceof WeakReference ? ((WeakReference)displayHandler.getToken()).get() : null;
+ if (handlerToken instanceof ResultDisplayHandler) {
+ createIO((ResultDisplayHandler)handlerToken);
lock = new Semaphore(1);
try {
lock.acquire(1);
@@ -499,8 +497,8 @@ public final class Manager {
@Override
public void run() {
- StatisticsPanel comp = (StatisticsPanel) ((ResultDisplayHandler)handlerSpi).getDisplayComponent().getLeftComponent();
- ((ResultDisplayHandler)handlerSpi).setTreePanel(comp.getTreePanel());
+ StatisticsPanel comp = (StatisticsPanel) ((ResultDisplayHandler)handlerToken).getDisplayComponent().getLeftComponent();
+ ((ResultDisplayHandler)handlerToken).setTreePanel(comp.getTreePanel());
lock.release();
}
});
diff --git a/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/api/TestResultDisplayHandler.java b/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/api/TestResultDisplayHandler.java
index e500e9f..a867c7e 100644
--- a/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/api/TestResultDisplayHandler.java
+++ b/ide/gsf.testrunner.ui/src/org/netbeans/modules/gsf/testrunner/ui/api/TestResultDisplayHandler.java
@@ -40,11 +40,10 @@ public abstract class TestResultDisplayHandler {
*/
public static final TestResultDisplayHandler create(TestSession session) {
Spi provider = Lookup.getDefault().lookup(Spi.class);
- if (provider != null) {
- return new Impl<>(provider.create(session), provider);
- } else {
- return new Impl<>(null, new ResultDisplayHandler(session));
+ if (provider == null) {
+ provider = ResultDisplayHandler.getProvider();
}
+ return new Impl<>(provider.create(session), provider);
}
private TestResultDisplayHandler() {
@@ -211,10 +210,10 @@ public abstract class TestResultDisplayHandler {
}
@Override
- Spi<T> getSpi() {
- return spi;
+ T getToken() {
+ return token;
}
}
- abstract Spi getSpi();
+ abstract Object getToken();
}
---------------------------------------------------------------------
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