diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b5ab3c91..747da3b0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,10 +21,10 @@ jobs: sudo /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & sleep 3 - - name: Set up JDK 17 + - name: Set up JDK 21 uses: actions/setup-java@v1 with: - java-version: '17' + java-version: '21' - name: Setup Node.js environment uses: actions/setup-node@v2 @@ -57,10 +57,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 17 + - name: Set up JDK 21 uses: actions/setup-java@v1 with: - java-version: '17' + java-version: '21' - name: Setup Node.js environment uses: actions/setup-node@v2 @@ -93,10 +93,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 17 + - name: Set up JDK 21 uses: actions/setup-java@v1 with: - java-version: '17' + java-version: '21' - name: Setup Node.js environment uses: actions/setup-node@v2 diff --git a/java-extension/com.microsoft.java.test.plugin.test/src/com/microsoft/java/test/plugin/coverage/CoverageHandlerTest.java b/java-extension/com.microsoft.java.test.plugin.test/src/com/microsoft/java/test/plugin/coverage/CoverageHandlerTest.java index 00b063e6..353d803e 100644 --- a/java-extension/com.microsoft.java.test.plugin.test/src/com/microsoft/java/test/plugin/coverage/CoverageHandlerTest.java +++ b/java-extension/com.microsoft.java.test.plugin.test/src/com/microsoft/java/test/plugin/coverage/CoverageHandlerTest.java @@ -16,15 +16,11 @@ import com.microsoft.java.test.plugin.coverage.model.MethodCoverage; import com.microsoft.java.test.plugin.coverage.model.SourceFileCoverage; -import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.ls.core.internal.ProjectUtils; -import org.eclipse.jdt.ls.core.internal.managers.ProjectsManager; import org.junit.Test; -import java.io.File; import java.util.Collections; import java.util.List; @@ -36,7 +32,7 @@ public class CoverageHandlerTest extends AbstractProjectsManagerBasedTest { public void testGetCoverageDetail() throws Exception { importProjects(Collections.singleton("coverage-test")); final IJavaProject javaProject = ProjectUtils.getJavaProject("coverage-test"); - final String basePath = new File("projects/coverage-test").getAbsolutePath(); + final String basePath = javaProject.getProject().getLocation().toFile().getAbsolutePath(); final CoverageHandler coverageHandler = new CoverageHandler(javaProject, basePath); final List coverageDetail = coverageHandler.getCoverageDetail(new NullProgressMonitor()); for (final SourceFileCoverage fileCoverage : coverageDetail) { diff --git a/java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/launchers/JUnitLaunchConfigurationDelegate.java b/java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/launchers/JUnitLaunchConfigurationDelegate.java index 149c5760..d0910410 100644 --- a/java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/launchers/JUnitLaunchConfigurationDelegate.java +++ b/java-extension/com.microsoft.java.test.plugin/src/main/java/com/microsoft/java/test/plugin/launchers/JUnitLaunchConfigurationDelegate.java @@ -31,12 +31,11 @@ import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IMethod; import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MethodDeclaration; -import org.eclipse.jdt.core.dom.NodeFinder; import org.eclipse.jdt.core.dom.SingleVariableDeclaration; +import org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil; import org.eclipse.jdt.launching.VMRunnerConfiguration; import java.io.BufferedWriter; @@ -156,20 +155,14 @@ private void addTestItemArgs(List arguments) throws CoreException { } final CompilationUnit root = (CompilationUnit) TestSearchUtils.parseToAst(unit, false /*fromCache*/, new NullProgressMonitor()); - final String key = method.getKey(); - ASTNode methodDeclaration = root.findDeclaringNode(key); + final MethodDeclaration methodDeclaration = ASTNodeSearchUtil.getMethodDeclarationNode(method, root); if (methodDeclaration == null) { - // fallback to find it according to source range - methodDeclaration = NodeFinder.perform(root, method.getSourceRange().getOffset(), - method.getSourceRange().getLength(), unit); - } - if (!(methodDeclaration instanceof MethodDeclaration)) { throw new CoreException(new Status(IStatus.ERROR, JUnitPlugin.PLUGIN_ID, IStatus.ERROR, "Cannot get method declaration of method" + method.getElementName(), null)); //$NON-NLS-1$ } final List parameters = new LinkedList<>(); - for (final Object obj : ((MethodDeclaration) methodDeclaration).parameters()) { + for (final Object obj : methodDeclaration.parameters()) { if (obj instanceof SingleVariableDeclaration) { final ITypeBinding paramTypeBinding = ((SingleVariableDeclaration) obj) .getType().resolveBinding(); diff --git a/java-extension/com.microsoft.java.test.target/com.microsoft.java.test.tp.target b/java-extension/com.microsoft.java.test.target/com.microsoft.java.test.tp.target index 5ea5c628..61abad65 100644 --- a/java-extension/com.microsoft.java.test.target/com.microsoft.java.test.tp.target +++ b/java-extension/com.microsoft.java.test.target/com.microsoft.java.test.tp.target @@ -23,25 +23,19 @@ - + - + - + - - - - - - + @@ -50,6 +44,12 @@ org.jacoco.core 0.8.12 + + org.apache.commons + commons-lang3 + 3.14.0 + jar + diff --git a/package.json b/package.json index ef0ba520..b2d3746b 100644 --- a/package.json +++ b/package.json @@ -55,22 +55,22 @@ "main": "./main.js", "contributes": { "javaExtensions": [ - "./server/junit-jupiter-api_5.9.3.jar", - "./server/junit-jupiter-engine_5.9.3.jar", - "./server/junit-jupiter-migrationsupport_5.9.3.jar", - "./server/junit-jupiter-params_5.9.3.jar", - "./server/junit-platform-commons_1.9.3.jar", - "./server/junit-platform-engine_1.9.3.jar", - "./server/junit-platform-launcher_1.9.3.jar", - "./server/junit-platform-runner_1.9.3.jar", - "./server/junit-platform-suite-api_1.9.3.jar", - "./server/junit-platform-suite-commons_1.9.3.jar", - "./server/junit-platform-suite-engine_1.9.3.jar", - "./server/junit-vintage-engine_5.9.3.jar", + "./server/junit-jupiter-api_5.10.3.jar", + "./server/junit-jupiter-engine_5.10.3.jar", + "./server/junit-jupiter-migrationsupport_5.10.3.jar", + "./server/junit-jupiter-params_5.10.3.jar", + "./server/junit-platform-commons_1.10.3.jar", + "./server/junit-platform-engine_1.10.3.jar", + "./server/junit-platform-launcher_1.10.3.jar", + "./server/junit-platform-runner_1.10.3.jar", + "./server/junit-platform-suite-api_1.10.3.jar", + "./server/junit-platform-suite-commons_1.10.3.jar", + "./server/junit-platform-suite-engine_1.10.3.jar", + "./server/junit-vintage-engine_5.10.3.jar", "./server/org.apiguardian.api_1.1.2.jar", - "./server/org.eclipse.jdt.junit4.runtime_1.3.0.v20220609-1843.jar", - "./server/org.eclipse.jdt.junit5.runtime_1.1.100.v20220907-0450.jar", - "./server/org.opentest4j_1.2.0.jar", + "./server/org.eclipse.jdt.junit4.runtime_1.3.100.v20231214-1952.jar", + "./server/org.eclipse.jdt.junit5.runtime_1.1.300.v20231214-1952.jar", + "./server/org.opentest4j_1.3.0.jar", "./server/org.jacoco.core_0.8.12.202403310830.jar", "./server/com.microsoft.java.test.plugin-0.42.0.jar" ], diff --git a/test/suite/launchUtils.test.ts b/test/suite/launchUtils.test.ts index 842f5277..8c8615e3 100644 --- a/test/suite/launchUtils.test.ts +++ b/test/suite/launchUtils.test.ts @@ -79,6 +79,21 @@ suite('LaunchUtils Tests', () => { ); }); + test('Resolve JUnit 5 parameterized test 5', async () => { + const argument: Response | undefined = await executeJavaLanguageServerCommand>( + JavaTestRunnerDelegateCommands.RESOLVE_JUNIT_ARGUMENT, JSON.stringify({ + projectName: 'junit', + testLevel: TestLevel.Method, + testKind: TestKind.JUnit5, + testNames: ['=junit/src\\/test\\/java=/optional=/true=/=/maven.pomderived=/true=/=/test=/true=/ { const { parseTags } = exportedForTesting; const config = { diff --git a/test/test-projects/junit/pom.xml b/test/test-projects/junit/pom.xml index d78bf237..19ab57cf 100644 --- a/test/test-projects/junit/pom.xml +++ b/test/test-projects/junit/pom.xml @@ -12,8 +12,8 @@ UTF-8 - 11 - 11 + 21 + 21 diff --git a/test/test-projects/junit/src/test/java/junit5/TestParameterizedWithStrangeComments.java b/test/test-projects/junit/src/test/java/junit5/TestParameterizedWithStrangeComments.java new file mode 100644 index 00000000..221caad5 --- /dev/null +++ b/test/test-projects/junit/src/test/java/junit5/TestParameterizedWithStrangeComments.java @@ -0,0 +1,24 @@ +package junit5; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +class TestParameterizedWithStrangeComments { + //FORMER_TEST_PARAMS + //@CsvSource( + // {",must not be null", + // "0L,size must be between 1 and 999999999"}) + //@ParameterizedTest + + /** + * [RequestContext.sessionId] + * Tests all invalid scenarios for requestContext.logonId. + */ + @CsvSource(delimiter = '|', textBlock = """ + -1 | size must be between 1 and 999999999 + """) + @ParameterizedTest + void whenInvalidReqCtxSessionId(Long __INPUT, String __EXPECTED) throws Exception { + assert(true); + } +}