You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by db...@apache.org on 2022/05/20 06:48:06 UTC

[netbeans] branch master updated: Minor bug fixes. (#4131)

This is an automated email from the ASF dual-hosted git repository.

dbalek 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 d97a211d0d Minor bug fixes. (#4131)
d97a211d0d is described below

commit d97a211d0d44f4d13a5c0f1f8fad420a9f71cfae
Author: Dusan Balek <du...@oracle.com>
AuthorDate: Fri May 20 08:48:01 2022 +0200

    Minor bug fixes. (#4131)
    
    * Spock Unroll support should handle multiple tests with the same name correctly.
    * Modified to fixed error thrown when typing an empty Javadoc comment for method with params.
---
 .../lsp/server/progress/TestProgressHandler.java   | 35 ++++----------------
 java/java.lsp.server/vscode/src/testAdapter.ts     | 38 ++++++++++++++--------
 .../api/java/source/DocTreePathHandle.java         | 11 ++++---
 .../javadoc/hints/GenerateJavadocCollector.java    |  7 +++-
 4 files changed, 43 insertions(+), 48 deletions(-)

diff --git a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/progress/TestProgressHandler.java b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/progress/TestProgressHandler.java
index 84009e5d46..1330c0f366 100644
--- a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/progress/TestProgressHandler.java
+++ b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/progress/TestProgressHandler.java
@@ -98,13 +98,13 @@ public final class TestProgressHandler implements TestResultDisplayHandler.Spi<T
                 }
                 return fileLocator != null ? fileLocator.find(loc) : null;
             }) : null;
-            TestSuiteInfo.TestCaseInfo info = testCases.get(id);
-            if (info != null) {
-                updateState(info, state);
-            } else {
-                info = new TestSuiteInfo.TestCaseInfo(id, name, fo != null ? Utils.toUri(fo) : null, null, state, stackTrace);
-                testCases.put(id, info);
+            int cnt = 1;
+            String base = id;
+            while (testCases.containsKey(id)) {
+                id = base + '-' + cnt++;
             }
+            TestSuiteInfo.TestCaseInfo info = new TestSuiteInfo.TestCaseInfo(id, name, fo != null ? Utils.toUri(fo) : null, null, state, stackTrace);
+            testCases.put(id, info);
         }
         String state = statusToState(report.getStatus());
         FileObject fo = fileLocations.size() == 1 ? fileLocations.values().iterator().next() : null;
@@ -144,27 +144,4 @@ public final class TestProgressHandler implements TestResultDisplayHandler.Spi<T
                 throw new IllegalStateException("Unexpected testsuite status: " + status);
         }
     }
-
-    private void updateState(TestSuiteInfo.TestCaseInfo info, String state) {
-        switch (state) {
-            case TestSuiteInfo.State.Errored:
-                info.setState(state);
-                break;
-            case TestSuiteInfo.State.Failed:
-                if (!TestSuiteInfo.State.Errored.equals(info.getState())) {
-                    info.setState(state);
-                }
-                break;
-            case TestSuiteInfo.State.Passed:
-                if (TestSuiteInfo.State.Skipped.equals(info.getState()) || TestSuiteInfo.State.Started.equals(info.getState())) {
-                    info.setState(state);
-                }
-                break;
-            case TestSuiteInfo.State.Skipped:
-                if (TestSuiteInfo.State.Started.equals(info.getState())) {
-                    info.setState(state);
-                }
-                break;
-        }
-    }
 }
diff --git a/java/java.lsp.server/vscode/src/testAdapter.ts b/java/java.lsp.server/vscode/src/testAdapter.ts
index 2b8c90f635..e1c3ac5e29 100644
--- a/java/java.lsp.server/vscode/src/testAdapter.ts
+++ b/java/java.lsp.server/vscode/src/testAdapter.ts
@@ -101,9 +101,7 @@ export class NbTestAdapter {
                 case 'failed':
                 case 'errored':
                     this.itemsToRun?.delete(item);
-                    if (message) {
-                        this.currentRun[state](item, message);
-                    }
+                    this.currentRun[state](item, message || new TestMessage(""));
                     break;
             }
             if (!noPassDown) {
@@ -240,15 +238,14 @@ export class NbTestAdapter {
                             parents.set(item, subName);
                         }
                     });
-                    if (parents.size === 1) {
-                        parents.forEach((label, parentTest) => {
-                            let arr = parentTests.get(parentTest);
-                            if (!arr) {
-                                parentTests.set(parentTest, arr = []);
-                                children.push(parentTest);
-                            }
-                            arr.push(this.testController.createTestItem(test.id, label));
-                        });
+                    const parent = this.selectParent(parents);
+                    if (parent) {
+                        let arr = parentTests.get(parent.test);
+                        if (!arr) {
+                            parentTests.set(parent.test, arr = []);
+                            children.push(parent.test);
+                        }
+                        arr.push(this.testController.createTestItem(test.id, parent.label));
                     }
                 } else {
                     currentTest = this.testController.createTestItem(test.id, test.name, testUri);
@@ -280,10 +277,23 @@ export class NbTestAdapter {
         } else {
             const regexp = new RegExp(item.id.replace(/[-[\]{}()*+?.,\\^$|\s]/g, '\\$&').replace(/#\w*/g, '\\S*'));
             if (regexp.test(test.id)) {
-                let idx = test.id.indexOf(':');
-                return idx < 0 ? test.id : test.id.slice(idx + 1);
+                return test.name;
             }
         }
         return undefined;
     }
+
+    selectParent(parents: Map<TestItem, string>): {test: TestItem, label: string} | undefined {
+        let ret: {test: TestItem, label: string} | undefined = undefined;
+        parents.forEach((label, parentTest) => {
+            if (ret) {
+                if (parentTest.id.replace(/#\w*/g, '').length > ret.test.id.replace(/#\w*/g, '').length) {
+                    ret = {test: parentTest, label};
+                }
+            } else {
+                ret = {test: parentTest, label};
+            }
+        });
+        return ret;
+    }
 }
diff --git a/java/java.source.base/src/org/netbeans/api/java/source/DocTreePathHandle.java b/java/java.source.base/src/org/netbeans/api/java/source/DocTreePathHandle.java
index a6a79eccbd..45798e2b62 100644
--- a/java/java.source.base/src/org/netbeans/api/java/source/DocTreePathHandle.java
+++ b/java/java.source.base/src/org/netbeans/api/java/source/DocTreePathHandle.java
@@ -175,7 +175,8 @@ public final class DocTreePathHandle {
             assert index != (-1);
             return new DocTreePathHandle(new CountingDelegate(treePathHandle, index, docTreePath.getLeaf().getKind()));
         }
-        Position pos = createPositionRef(treePathHandle.getFileObject(), position.getPreferredPosition(), Bias.Forward);
+        int preferredPosition = position.getPreferredPosition();
+        Position pos = preferredPosition >= 0 ? createPositionRef(treePathHandle.getFileObject(), preferredPosition, Bias.Forward) : null;
         return new DocTreePathHandle(new DocTreeDelegate(pos, new DocTreeDelegate.KindPath(docTreePath), treePathHandle));
     }
 
@@ -284,8 +285,8 @@ public final class DocTreePathHandle {
                 // no doc comment for the TreePath
                 return null;
             }
-            int pos = position.getOffset();
-            tp = resolvePathForPos(javac, treePath, doc, pos + 1);
+            int pos = position != null ? position.getOffset() : -1;
+            tp = pos < 0 ? new DocTreePath(treePath, doc) : resolvePathForPos(javac, treePath, doc, pos + 1);
             if (tp != null) {
                 return tp;
             }
@@ -308,7 +309,9 @@ public final class DocTreePathHandle {
 
         public boolean equalsHandle(Delegate obj) {
             DocTreeDelegate other = (DocTreeDelegate) obj;
-            if (this.position.getOffset() != this.position.getOffset()) {
+            int otherOffset = other.position != null ? other.position.getOffset() : -1;
+            int thisOffset = this.position != null ? this.position.getOffset() : -1;
+            if (thisOffset != otherOffset) {
                 return false;
             }
             return other.getTreePathHandle().equals(treePathHandle);
diff --git a/java/javadoc/src/org/netbeans/modules/javadoc/hints/GenerateJavadocCollector.java b/java/javadoc/src/org/netbeans/modules/javadoc/hints/GenerateJavadocCollector.java
index 88dee530e4..e660d0b308 100644
--- a/java/javadoc/src/org/netbeans/modules/javadoc/hints/GenerateJavadocCollector.java
+++ b/java/javadoc/src/org/netbeans/modules/javadoc/hints/GenerateJavadocCollector.java
@@ -21,6 +21,7 @@ package org.netbeans.modules.javadoc.hints;
 import com.sun.source.tree.Tree;
 import com.sun.source.util.TreePath;
 import java.io.IOException;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Consumer;
 import javax.lang.model.SourceVersion;
 import javax.lang.model.element.Element;
@@ -53,7 +54,11 @@ public class GenerateJavadocCollector implements CompletionCollector {
     @Override
     public boolean collectCompletions(Document doc, int offset, Completion.Context context, Consumer<Completion> consumer) {
         if (context != null && context.getTriggerKind() == Completion.TriggerKind.TriggerCharacter && context.getTriggerCharacter() == '*') {
-            TokenSequence<JavaTokenId> ts = SourceUtils.getJavaTokenSequence(TokenHierarchy.get(doc), offset);
+            AtomicReference<TokenSequence<JavaTokenId>> ref = new AtomicReference<>();
+            doc.render(() -> {
+                ref.set(SourceUtils.getJavaTokenSequence(TokenHierarchy.get(doc), offset));
+            });
+            TokenSequence<JavaTokenId> ts = ref.get();
             if (ts != null) {
                 ts.move(offset);
                 if (ts.moveNext() && ts.token().id() == JavaTokenId.JAVADOC_COMMENT) {


---------------------------------------------------------------------
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