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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to