From 77b47f34a8c92c745cac7dfae557cde6fda2be8f Mon Sep 17 00:00:00 2001 From: wenyutang-ms Date: Wed, 14 Oct 2026 15:10:37 +0800 Subject: [PATCH 1/2] build: release 0.27.7 Bump the patch version and list the seven user-facing changes since 0.27.6. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 86246f51-a4f8-465b-9186-fcd14143ed67 --- CHANGELOG.md | 10 ++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0f5287a..43570a8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to the "vscode-java-dependency" extension will be documented The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 0.27.7 + +- fix - Prevent duplicate Java project roots and incorrect workspace-folder grouping in multi-root workspaces in https://github.com/microsoft/vscode-java-dependency/pull/1061 +- fix - Hide duplicate empty physical folder hierarchies while preserving non-Java resources in https://github.com/microsoft/vscode-java-dependency/pull/1063 +- fix - Hide workspace roots without Java projects when non-Java resources are hidden in https://github.com/microsoft/vscode-java-dependency/pull/1074 +- enhancement - Allow browsing and opening files in non-Java workspace roots when non-Java resources are shown, respecting `files.exclude`, in https://github.com/microsoft/vscode-java-dependency/pull/1075 +- ux - Move the Show/Hide Non-Java Resources action to the Java Projects view toolbar in https://github.com/microsoft/vscode-java-dependency/pull/1078 +- fix - Align experimental Java LSP navigation tool contracts and distinguish navigation locations from full declaration read ranges in https://github.com/microsoft/vscode-java-dependency/pull/1099 +- enhancement - Add Spanish localization for commands, settings, task definitions, and Java Projects welcome views in https://github.com/microsoft/vscode-java-dependency/pull/1101 + ## 0.27.6 - enhancement - Prefer Java upgrade over CVE in dependency recommendations in https://github.com/microsoft/vscode-java-dependency/pull/1033 diff --git a/package-lock.json b/package-lock.json index 8d5d5e07..ecc56cd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-java-dependency", - "version": "0.27.6", + "version": "0.27.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-java-dependency", - "version": "0.27.6", + "version": "0.27.7", "license": "MIT", "dependencies": { "@github/copilot-language-server": "^1.530.0", diff --git a/package.json b/package.json index 0fe4894e..489f1c04 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-java-dependency", "displayName": "Project Manager for Java", "description": "%description%", - "version": "0.27.6", + "version": "0.27.7", "publisher": "vscjava", "preview": false, "aiKey": "5c642b22-e845-4400-badb-3f8509a70777", From 573b2a868ace32922929eeccd5576abe1c3ce79a Mon Sep 17 00:00:00 2001 From: wenyutang-ms Date: Wed, 14 Oct 2026 15:41:37 +0800 Subject: [PATCH 2/2] fix(ci): support Java 25 in Gradle integration tests Upgrade the Gradle fixture to 9.1.0 and collect Java language server logs from the test runner's actual temporary user-data directory. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 86246f51-a4f8-465b-9186-fcd14143ed67 --- .github/workflows/linux.yml | 7 ++++++- .github/workflows/macOS.yml | 7 ++++++- .github/workflows/windows.yml | 8 +++++++- CONTRIBUTING.md | 6 ++++++ test/gradle/.vscode/settings.json | 2 +- test/index.ts | 4 ++++ 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index ecfec25f..f9a9b267 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -49,4 +49,9 @@ jobs: - name: Print language server Log if job failed if: ${{ failure() }} - run: find $HOME/.config/Code/User/workspaceStorage/*/redhat.java/jdt_ws/.metadata/.log -print -exec cat '{}' \;; \ No newline at end of file + run: | + if [ -z "$JAVA_TEST_USER_DIR" ] || [ ! -d "$JAVA_TEST_USER_DIR/User/workspaceStorage" ]; then + echo "::warning::Java test workspace storage is unavailable; the test host may not have started." + exit 0 + fi + find "$JAVA_TEST_USER_DIR/User/workspaceStorage" -path '*/redhat.java/jdt_ws/.metadata/.log' -print -exec cat '{}' \; \ No newline at end of file diff --git a/.github/workflows/macOS.yml b/.github/workflows/macOS.yml index 6bea43e7..4ba16a0c 100644 --- a/.github/workflows/macOS.yml +++ b/.github/workflows/macOS.yml @@ -42,4 +42,9 @@ jobs: - name: Print language server Log if job failed if: ${{ failure() }} - run: find $HOME/Library/Application\ Support/Code/User/workspaceStorage/*/redhat.java/jdt_ws/.metadata/.log -print -exec cat '{}' \;; + run: | + if [ -z "$JAVA_TEST_USER_DIR" ] || [ ! -d "$JAVA_TEST_USER_DIR/User/workspaceStorage" ]; then + echo "::warning::Java test workspace storage is unavailable; the test host may not have started." + exit 0 + fi + find "$JAVA_TEST_USER_DIR/User/workspaceStorage" -path '*/redhat.java/jdt_ws/.metadata/.log' -print -exec cat '{}' \; diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 902dd582..8b1a5146 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -45,4 +45,10 @@ jobs: - name: Print language server Log if job failed if: ${{ failure() }} - run: Get-ChildItem -Path $env:APPDATA/Code/User/workspaceStorage/*/redhat.java/jdt_ws/.metadata/.log | cat + run: | + if (-not $env:JAVA_TEST_USER_DIR -or -not (Test-Path "$env:JAVA_TEST_USER_DIR\User\workspaceStorage")) { + Write-Warning 'Java test workspace storage is unavailable; the test host may not have started.' + exit 0 + } + Get-ChildItem -Path "$env:JAVA_TEST_USER_DIR\User\workspaceStorage\*\redhat.java\jdt_ws\.metadata\.log" -Force | + ForEach-Object { Write-Output $_.FullName; Get-Content -LiteralPath $_.FullName } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 70d9e112..840fa34c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,6 +34,12 @@ To set up the vscode-java-dependency project, follow these steps: - Run the "Attach to Plugin" task. - Note: This task is required only if you want to debug Java code [jdtls.ext](./jdtls.ext). It requires the [vscode-pde](https://marketplace.visualstudio.com/items?itemName=yaozheng.vscode-pde) extension to be installed. +## Integration Tests + +After building the server JAR and installing dependencies, run `npm test`. The Gradle fixture uses Gradle 9.1.0 to support the JDK 25 bundled with the Java extension. + +The runner prints its temporary VS Code user data directory and exports it as `JAVA_TEST_USER_DIR` in GitHub Actions. CI reads Java language server logs from that directory's `User/workspaceStorage`, rather than the default VS Code profile. + ## Java LSP Tool Contract Tests After installing dependencies, run `npm run test-lsp-tools` for the isolated navigation-tool suite. It compiles TypeScript and starts a separate VS Code test host; no Java server build, Java project, or signed-in Copilot session is required. Set `VSCODE_EXECUTABLE_PATH` to reuse an existing VS Code executable instead of downloading one. diff --git a/test/gradle/.vscode/settings.json b/test/gradle/.vscode/settings.json index 2a3242ee..a1a6ab08 100644 --- a/test/gradle/.vscode/settings.json +++ b/test/gradle/.vscode/settings.json @@ -1,4 +1,4 @@ { "java.server.launchMode": "Standard", - "java.import.gradle.version": "7.3" + "java.import.gradle.version": "9.1.0" } diff --git a/test/index.ts b/test/index.ts index 5098470a..7fc9c6e5 100644 --- a/test/index.ts +++ b/test/index.ts @@ -12,6 +12,10 @@ async function main(): Promise { // test fails in macOS since the limitation of path length // See: https://github.com/microsoft/vscode/issues/86382#issuecomment-593765388 const userDir = fs.mkdtempSync(path.join(os.tmpdir(), "vscode-user")); + process.stdout.write(`Test user data directory: ${userDir}${os.EOL}`); + if (process.env.GITHUB_ENV) { + fs.appendFileSync(process.env.GITHUB_ENV, `JAVA_TEST_USER_DIR=${userDir}${os.EOL}`); + } const vscodeExecutablePath = await downloadAndUnzipVSCode(); // Resolve redhat.java dependency