Skip to content

Commit e42565b

Browse files
authored
fix - Method parsing error (#1722)
1 parent eac027f commit e42565b

File tree

8 files changed

+76
-48
lines changed

8 files changed

+76
-48
lines changed

.github/workflows/build.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ jobs:
2121
sudo /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
2222
sleep 3
2323
24-
- name: Set up JDK 17
24+
- name: Set up JDK 21
2525
uses: actions/setup-java@v1
2626
with:
27-
java-version: '17'
27+
java-version: '21'
2828

2929
- name: Setup Node.js environment
3030
uses: actions/setup-node@v2
@@ -57,10 +57,10 @@ jobs:
5757
steps:
5858
- uses: actions/checkout@v2
5959

60-
- name: Set up JDK 17
60+
- name: Set up JDK 21
6161
uses: actions/setup-java@v1
6262
with:
63-
java-version: '17'
63+
java-version: '21'
6464

6565
- name: Setup Node.js environment
6666
uses: actions/setup-node@v2
@@ -93,10 +93,10 @@ jobs:
9393
steps:
9494
- uses: actions/checkout@v2
9595

96-
- name: Set up JDK 17
96+
- name: Set up JDK 21
9797
uses: actions/setup-java@v1
9898
with:
99-
java-version: '17'
99+
java-version: '21'
100100

101101
- name: Setup Node.js environment
102102
uses: actions/setup-node@v2

java-extension/com.microsoft.java.test.plugin.test/src/com/microsoft/java/test/plugin/coverage/CoverageHandlerTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,11 @@
1616
import com.microsoft.java.test.plugin.coverage.model.MethodCoverage;
1717
import com.microsoft.java.test.plugin.coverage.model.SourceFileCoverage;
1818

19-
import org.eclipse.core.resources.IProject;
2019
import org.eclipse.core.runtime.NullProgressMonitor;
2120
import org.eclipse.jdt.core.IJavaProject;
22-
import org.eclipse.jdt.core.JavaCore;
2321
import org.eclipse.jdt.ls.core.internal.ProjectUtils;
24-
import org.eclipse.jdt.ls.core.internal.managers.ProjectsManager;
2522
import org.junit.Test;
2623

27-
import java.io.File;
2824
import java.util.Collections;
2925
import java.util.List;
3026

@@ -36,7 +32,7 @@ public class CoverageHandlerTest extends AbstractProjectsManagerBasedTest {
3632
public void testGetCoverageDetail() throws Exception {
3733
importProjects(Collections.singleton("coverage-test"));
3834
final IJavaProject javaProject = ProjectUtils.getJavaProject("coverage-test");
39-
final String basePath = new File("projects/coverage-test").getAbsolutePath();
35+
final String basePath = javaProject.getProject().getLocation().toFile().getAbsolutePath();
4036
final CoverageHandler coverageHandler = new CoverageHandler(javaProject, basePath);
4137
final List<SourceFileCoverage> coverageDetail = coverageHandler.getCoverageDetail(new NullProgressMonitor());
4238
for (final SourceFileCoverage fileCoverage : coverageDetail) {

java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/launchers/JUnitLaunchConfigurationDelegate.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,11 @@
3131
import org.eclipse.jdt.core.IJavaProject;
3232
import org.eclipse.jdt.core.IMethod;
3333
import org.eclipse.jdt.core.JavaCore;
34-
import org.eclipse.jdt.core.dom.ASTNode;
3534
import org.eclipse.jdt.core.dom.CompilationUnit;
3635
import org.eclipse.jdt.core.dom.ITypeBinding;
3736
import org.eclipse.jdt.core.dom.MethodDeclaration;
38-
import org.eclipse.jdt.core.dom.NodeFinder;
3937
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
38+
import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil;
4039
import org.eclipse.jdt.launching.VMRunnerConfiguration;
4140

4241
import java.io.BufferedWriter;
@@ -156,20 +155,14 @@ private void addTestItemArgs(List arguments) throws CoreException {
156155
}
157156
final CompilationUnit root = (CompilationUnit) TestSearchUtils.parseToAst(unit,
158157
false /*fromCache*/, new NullProgressMonitor());
159-
final String key = method.getKey();
160-
ASTNode methodDeclaration = root.findDeclaringNode(key);
158+
final MethodDeclaration methodDeclaration = ASTNodeSearchUtil.getMethodDeclarationNode(method, root);
161159
if (methodDeclaration == null) {
162-
// fallback to find it according to source range
163-
methodDeclaration = NodeFinder.perform(root, method.getSourceRange().getOffset(),
164-
method.getSourceRange().getLength(), unit);
165-
}
166-
if (!(methodDeclaration instanceof MethodDeclaration)) {
167160
throw new CoreException(new Status(IStatus.ERROR, JUnitPlugin.PLUGIN_ID, IStatus.ERROR,
168161
"Cannot get method declaration of method" + method.getElementName(), null)); //$NON-NLS-1$
169162
}
170163

171164
final List<String> parameters = new LinkedList<>();
172-
for (final Object obj : ((MethodDeclaration) methodDeclaration).parameters()) {
165+
for (final Object obj : methodDeclaration.parameters()) {
173166
if (obj instanceof SingleVariableDeclaration) {
174167
final ITypeBinding paramTypeBinding = ((SingleVariableDeclaration) obj)
175168
.getType().resolveBinding();

java-extension/com.microsoft.java.test.target/com.microsoft.java.test.tp.target

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,19 @@
2323
<unit id="org.eclipse.sdk.feature.group" version="0.0.0"/>
2424
<unit id="org.mockito.mockito-core" version="0.0.0"/>
2525
<unit id="org.apache.commons.commons-io" version="0.0.0"/>
26-
<repository location="https://download.eclipse.org/eclipse/updates/4.28/R-4.28-202306050440/"/>
26+
<repository location="https://download.eclipse.org/eclipse/updates/4.33-I-builds/I20240728-1800/"/>
2727
location>
2828
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
2929
<unit id="org.eclipse.xtext.xbase.lib" version="0.0.0"/>
30-
<repository location="https://download.eclipse.org/releases/2023-03/"/>
30+
<repository location="https://download.eclipse.org/releases/2024-03/"/>
3131
location>
3232
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
33-
<repository location="https://download.eclipse.org/lsp4j/updates/releases/0.21.1/"/>
33+
<repository location="https://download.eclipse.org/lsp4j/updates/releases/0.23.1/"/>
3434
<unit id="org.eclipse.lsp4j.sdk.feature.group" version="0.0.0"/>
3535
location>
3636
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
3737
<unit id="org.eclipse.jdt.ls.core" version="0.0.0"/>
38-
40-
<repository location="https://download.eclipse.org/jdtls/snapshots/repository/1.30.0.202310302327/"/>
41-
location>
42-
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
43-
<unit id="org.apache.commons.lang3" version="3.1.0.v201403281430"/>
44-
<repository location="https://download.eclipse.org/tools/orbit/R-builds/R20200529191137/repository/"/>
38+
<repository location="https://download.eclipse.org/jdtls/snapshots/repository/latest/"/>
4539
location>
4640
<location includeDependencyDepth="infinite" includeDependencyScopes="compile" includeSource="true" missingManifest="generate" type="Maven">
4741
<dependencies>
@@ -50,6 +44,12 @@
5044
<artifactId>org.jacoco.coreartifactId>
5145
<version>0.8.12version>
5246
dependency>
47+
<dependency>
48+
<groupId>org.apache.commonsgroupId>
49+
<artifactId>commons-lang3artifactId>
50+
<version>3.14.0version>
51+
<type>jartype>
52+
dependency>
5353
dependencies>
5454
location>
5555
locations>

package.json

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -55,22 +55,22 @@
5555
"main": "./main.js",
5656
"contributes": {
5757
"javaExtensions": [
58-
"./server/junit-jupiter-api_5.9.3.jar",
59-
"./server/junit-jupiter-engine_5.9.3.jar",
60-
"./server/junit-jupiter-migrationsupport_5.9.3.jar",
61-
"./server/junit-jupiter-params_5.9.3.jar",
62-
"./server/junit-platform-commons_1.9.3.jar",
63-
"./server/junit-platform-engine_1.9.3.jar",
64-
"./server/junit-platform-launcher_1.9.3.jar",
65-
"./server/junit-platform-runner_1.9.3.jar",
66-
"./server/junit-platform-suite-api_1.9.3.jar",
67-
"./server/junit-platform-suite-commons_1.9.3.jar",
68-
"./server/junit-platform-suite-engine_1.9.3.jar",
69-
"./server/junit-vintage-engine_5.9.3.jar",
58+
"./server/junit-jupiter-api_5.10.3.jar",
59+
"./server/junit-jupiter-engine_5.10.3.jar",
60+
"./server/junit-jupiter-migrationsupport_5.10.3.jar",
61+
"./server/junit-jupiter-params_5.10.3.jar",
62+
"./server/junit-platform-commons_1.10.3.jar",
63+
"./server/junit-platform-engine_1.10.3.jar",
64+
"./server/junit-platform-launcher_1.10.3.jar",
65+
"./server/junit-platform-runner_1.10.3.jar",
66+
"./server/junit-platform-suite-api_1.10.3.jar",
67+
"./server/junit-platform-suite-commons_1.10.3.jar",
68+
"./server/junit-platform-suite-engine_1.10.3.jar",
69+
"./server/junit-vintage-engine_5.10.3.jar",
7070
"./server/org.apiguardian.api_1.1.2.jar",
71-
"./server/org.eclipse.jdt.junit4.runtime_1.3.0.v20220609-1843.jar",
72-
"./server/org.eclipse.jdt.junit5.runtime_1.1.100.v20220907-0450.jar",
73-
"./server/org.opentest4j_1.2.0.jar",
71+
"./server/org.eclipse.jdt.junit4.runtime_1.3.100.v20231214-1952.jar",
72+
"./server/org.eclipse.jdt.junit5.runtime_1.1.300.v20231214-1952.jar",
73+
"./server/org.opentest4j_1.3.0.jar",
7474
"./server/org.jacoco.core_0.8.12.202403310830.jar",
7575
"./server/com.microsoft.java.test.plugin-0.42.0.jar"
7676
],

test/suite/launchUtils.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,21 @@ suite('LaunchUtils Tests', () => {
7979
);
8080
});
8181

82+
test('Resolve JUnit 5 parameterized test 5', async () => {
83+
const argument: Response<IJUnitLaunchArguments> | undefined = await executeJavaLanguageServerCommand<Response<IJUnitLaunchArguments>>(
84+
JavaTestRunnerDelegateCommands.RESOLVE_JUNIT_ARGUMENT, JSON.stringify({
85+
projectName: 'junit',
86+
testLevel: TestLevel.Method,
87+
testKind: TestKind.JUnit5,
88+
testNames: ['=junit/src\\/test\\/java=/optional=/true=/=/maven.pomderived=/true=/=/test=/true=/]
89+
})
90+
);
91+
assert.strictEqual(
92+
0,
93+
argument?.status
94+
);
95+
});
96+
8297
test('test parseTags()', () => {
8398
const { parseTags } = exportedForTesting;
8499
const config = {

test/test-projects/junit/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313
<properties>
1414
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
15-
<maven.compiler.source>11maven.compiler.source>
16-
<maven.compiler.target>11maven.compiler.target>
15+
<maven.compiler.source>21maven.compiler.source>
16+
<maven.compiler.target>21maven.compiler.target>
1717
properties>
1818

1919
<dependencies>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package junit5;
2+
3+
import org.junit.jupiter.params.ParameterizedTest;
4+
import org.junit.jupiter.params.provider.CsvSource;
5+
6+
class TestParameterizedWithStrangeComments {
7+
//FORMER_TEST_PARAMS
8+
//@CsvSource(
9+
// {",must not be null",
10+
// "0L,size must be between 1 and 999999999"})
11+
//@ParameterizedTest
12+
13+
/**
14+
* [RequestContext.sessionId]
15+
* Tests all invalid scenarios for requestContext.logonId.
16+
*/
17+
@CsvSource(delimiter = '|', textBlock = """
18+
-1 | size must be between 1 and 999999999
19+
""")
20+
@ParameterizedTest
21+
void whenInvalidReqCtxSessionId(Long __INPUT, String __EXPECTED) throws Exception {
22+
assert(true);
23+
}
24+
}

0 commit comments

Comments
 (0)