Repository navigation
Java Test Runner
These details concern the integration-test harness in microsoft/vscode-java-test, not settings imposed on users' test projects.
-
Dedicated VS Code user data:
test/index.ts::maincreates.vscode-test/user-data/Userunder the repository and writessettings.jsonbefore its tworunTestscalls. Both the Maven/JUnit workspace suite and unmanaged-folder suite receive the same directory through--user-data-dir; this is a shared test profile, not a fresh profile per suite. [1] -
AI features disabled for test launches: that settings file sets
chat.disableAIFeaturestotrue. Both launches also pass--disable-extensionforGitHub.copilot-chatandTypeScriptTeam.jsts-chat-features. [1] -
Explicit language-server Java selection: when
JAVA_HOMEis nonempty, the generated settings includejava.jdt.ls.java.homewith that value. The Linux, Windows, and macOS CI jobs install Temurin JDK 25 (replacing 21). This records the CI runtime choice, not a minimum Java target for users' projects. [1][2] -
Failure-log location: all three CI jobs collect JDT language-server logs from
.vscode-test/user-data/User/workspaceStorage/*/redhat.java/jdt_ws/.metadata/.logon failure, rather than the normal OS-specific VS Code user-data location. Use the test-profile path when investigating these integration runs. [2]
Verified against merged source commit 7e2584d2d44804999c3d06a2605e9352782d7e6b in PR #1937. Both changed files were inspected; their main file blobs matched the merged revision at maintenance time. This documents harness configuration, not a verified successful CI run or a release/deployment claim.
-
test/index.ts,mainand bothrunTestscalls. -
.github/workflows/build.yml,linux,windows, anddarwinjobs.
The source dispatcher configuration below is verified at merged/source-tip commit ea7fffbabdf2ea57e6e203475105fb294bee0302, microsoft/vscode-java-test PR #1944. Its complete one-file patch was inspected and PR base/head/merge identities rechecked after paging. This is repository automation, not Java test execution behavior. [9]
-
Dispatch authentication:
jobs.team-memoryrestoresactions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1(annotated v3.2.0), referencingvars.ISSUELENS_DISPATCH_APP_CLIENT_IDandsecrets.ISSUELENS_DISPATCH_APP_PRIVATE_KEY. The requested scope is ownermicrosoft, repositoryvscode-java-pack, Contents read and Actions write. The queue step receivessteps.dispatch-token.outputs.token, notgithub.token. Workflow-levelpermissions: {}remains; the source job no longer grantscontents: readoractions: write. PR #1944 reverses the built-in-token substitution because the source repository token cannot dispatch a workflow in another repository. [9] -
Retained caller context:
Queue IssueLens Team Memorytriggers on pushes tomain. The job requiresISSUELENS_TEAM_MEMORY_ENABLED == 'true', canonical repositorymicrosoft/vscode-java-test, the default-branch ref, a push event,github.workflow_sha == github.sha, and falsecreated,deleted, andforcedflags. It usesubuntu-latestand a 10-minute timeout. Concurrency includes the source repository and eventafter(or run ID), withcancel-in-progress: false; this is not a cross-repository wiki lock. [9] -
Coordinator boundary: the queue step uses
microsoft/IssueLens/.github/actions/queue-team-memory@a81d2d96167fc0e69ac631c2edc85f858e693289, targetingmicrosoft/vscode-java-pack, workflowteam-memory-coordinator.yml, refmain. Its five string inputs aresource_repository,source_run_id,source_run_attempt,push_before(eventbefore), andpush_after(github.sha). This source workflow has noworkflow_dispatch, checkout, or direct agent invocation. See Java Pack for the separately documented coordinator recovery entry point; its implementation was not revalidated here. [9] - Operational evidence limit: the workflow references establish credential dependencies and requested permissions, not configured secret values, App installation/access, successful token minting, dispatch, or wiki publication. The PR changes workflow wiring only; external action internals and live execution were not verified. [9]
The prior PR #1936 description is superseded as current operation: it described direct issuelens invocation and source-local manual PR dispatch at 84fa601956f106db9c63c753c11a48acdaca91d5. Historical provenance is retained below; do not use that old workflow as the current recovery route. [3][9]
- Historical
.github/workflows/team-memory-post-merge.yml, triggers, concurrency, andjobs.team-memory, PR #1936. - Historical
.github/issuelens/team-memory.md, Maintenance and provenance. -
microsoft/vscode-java-test/.github/workflows/team-memory-post-merge.yml,on,permissions,concurrency, andjobs.team-memory, full source commitea7fffbabdf2ea57e6e203475105fb294bee0302; PR #1944, source identitymicrosoft/vscode-java-test#1944:ea7fffbabdf2ea57e6e203475105fb294bee0302.
Verified in microsoft/vscode-java-test at cff6fdb4b5e3221a4e88473d2f90e1fd58f1061c, merged PR #1938, related to issue #1692. All nine changed files were inspected and matched their PR-head blobs at this merge, also the supplied push-after and source-tip revision. At that revision the changelog placed the fix under Unreleased. Release-preparation PR #1945 subsequently lists it under 0.47.0 at 4ad2329340000a9e94251cbed1e4fadfbc97d62e; neither observation establishes publication or deployment. [5][8][10]
-
Owning layer and trigger: the Test Runner's JDTLS plugin handles this in
TestSearchUtils, not in the VS Code client or target-JVM runner.requiresPreviewFallbackchecks that the JDT project preview option is enabled and its source level differs fromJavaCore.latestSupportedJavaVersion(). A cached discovery AST reportingIProblem.PreviewFeaturesNotAllowedis bypassed. The discovery parser copies project compiler options, disables preview only in that copy, resolves bindings, and ignores method bodies. The public non-discoveryparseToAstpath retains its normal behavior. [5] -
Discovery coverage: file discovery examines all top-level types rather than only the primary type, including sibling test classes and non-class declarations via
AbstractTypeDeclaration. For JUnit 5 and 6, project discovery supplements the normal search with compilation-unit discovery in test source roots when fallback is required. Class expansion uses the discovered tree and JDT handle matching; nested-only parents are retained when their children contain tests. [5] -
Diagnostic boundary: when a top-level declaration or binding is unavailable under the fallback condition, discovery throws
CoreExceptionwithCannot discover tests in ...and either an AST error orJDT cannot resolve test bindings with the project's preview settings.This distinguishes that failure from a valid file with no tests; it is not a guarantee that every empty result is an error. [5] -
Compatibility limits: the fallback does not change project compiler settings or test launch arguments, and does not add JDT support for older preview syntax. Do not treat it as a Maven/Gradle import fix or as proof that changing Maven
compilerArgsenables JDT preview; that mapping was not verified by this change. [5]PR #1938 -
Regression coverage:
TestSearchUtilsTest.testDiscoverJUnit5TestsWithOlderPreviewSourcesets source/compliance to 17 and enables JDT preview, asserts the initial unsupported-preview problem and missing binding, then checks file discovery, sibling methods, a no-test helper, project discovery, nested expansion, and preservation of the project's preview option. Fixtures include enum, record, and annotation declarations alongside tests. The plugin exports itsutilpackage to the test bundle withx-friends. These are source-verified assertions, not a verified passing test run; the PR reports that local Tycho execution was blocked by missing Eclipse/JDT types. [6][7]PR #1938
-
TestSearchUtils.java, discovery entry points,parseToDiscoveryAst,requiresPreviewFallback, andthrowIfUnsupportedPreview. -
TestSearchUtilsTest.java,testDiscoverJUnit5TestsWithOlderPreviewSourceandprojects/preview-junitfixtures. -
META-INF/MANIFEST.MF,Export-Package. -
CHANGELOG.md, Unreleased.
At merged/source-tip commit 4ad2329340000a9e94251cbed1e4fadfbc97d62e, microsoft/vscode-java-test PR #1945 changes the extension manifest version from 0.46.0 to 0.47.0 and synchronizes the lockfile's top-level and root-package versions. Its lockfile patch changes only those two version fields, not dependency resolutions. The changelog replaces Unreleased with 0.47.0 notes collecting earlier output/reporting, discovery, module-opening, and runtime-dependency changes. Use that section as the release-note index, not as fresh implementation verification of each referenced PR. [10][11][12]
All three PR file patches were inspected and metadata remained unchanged after paging; the manifest and changelog were read at the merge SHA, and all three final file blob identities matched the PR inventory at that same supplied source tip. This is release preparation only: a source version and changelog heading do not establish a Marketplace publication, release tag, deployment, or successful validation run.
-
microsoft/vscode-java-test/CHANGELOG.md,0.47.0. -
microsoft/vscode-java-test/package.json,version. -
microsoft/vscode-java-test/package-lock.json,versionandpackages[""].version; complete version-only patch in PR #1945, source identitymicrosoft/vscode-java-test#1945:4ad2329340000a9e94251cbed1e4fadfbc97d62e. The lockfile exceeds the bounded whole-file read limit; its final blob identity was verified through the commit-pinned root tree.