Skip to content

Commit 7854751

Browse files
wenytang-msCopilot
andcommitted
refactor: use npm package for autotest CLI and test plans
- Install @vscjava/vscode-autotest from npm instead of cloning repo - Test plans now come from npm package (single source of truth) - Support local overlay via test-plans-local/ directory - Matrix CI runs each plan in parallel with rerun support - Analyze job aggregates results with LLM analysis and Job Summary - Delete stale test-plans/ from repo (now in npm package) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent efd4f74 commit 7854751

17 files changed

Lines changed: 86 additions & 946 deletions

.github/workflows/e2e-autotest.yml

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,19 @@ jobs:
1717
outputs:
1818
matrix: ${{ steps.scan.outputs.matrix }}
1919
steps:
20-
- name: Checkout javaext-autotest
21-
uses: actions/checkout@v4
20+
- name: Setup Node.js
21+
uses: actions/setup-node@v4
2222
with:
23-
repository: wenytang-ms/javaext-autotest
23+
node-version: 20
24+
25+
- name: Install autotest CLI
26+
run: npm install -g @vscjava/vscode-autotest
2427

2528
- name: Scan test plans
2629
id: scan
2730
run: |
28-
plans=$(ls test-plans/*.yaml | xargs -I{} basename {} .yaml | grep -v java-fresh-import | jq -R . | jq -sc .)
31+
pkg_dir=$(npm root -g)/@vscjava/vscode-autotest
32+
plans=$(ls "$pkg_dir"/test-plans/*.yaml | xargs -I{} basename {} .yaml | grep -v java-fresh-import | jq -R . | jq -sc .)
2933
echo "matrix=$plans" >> "$GITHUB_OUTPUT"
3034
echo "Found plans: $plans"
3135
@@ -41,11 +45,8 @@ jobs:
4145
plan: ${{ fromJson(needs.discover.outputs.matrix) }}
4246

4347
steps:
44-
- name: Checkout javaext-autotest
48+
- name: Checkout vscode-java-pack (for local test-plans overlay)
4549
uses: actions/checkout@v4
46-
with:
47-
repository: wenytang-ms/javaext-autotest
48-
path: javaext-autotest
4950

5051
- name: Checkout vscode-java (test projects)
5152
uses: actions/checkout@v4
@@ -83,25 +84,38 @@ jobs:
8384
distribution: temurin
8485
java-version: 21
8586

86-
- name: Install and build autotest
87-
working-directory: javaext-autotest
88-
run: npm ci && npm run build
87+
- name: Install autotest CLI
88+
run: npm install -g @vscjava/vscode-autotest
89+
90+
- name: Sync test plans from npm package
91+
shell: pwsh
92+
run: |
93+
$pkgDir = (npm root -g) + "/@vscjava/vscode-autotest"
94+
# Copy npm package test plans, then overlay with local test-plans (if any)
95+
$targetDir = "test-plans"
96+
if (!(Test-Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir | Out-Null }
97+
Copy-Item "$pkgDir/test-plans/*.yaml" $targetDir -Force
98+
# Local test-plans in repo can override npm package versions
99+
if (Test-Path "test-plans-local") {
100+
Copy-Item "test-plans-local/*.yaml" $targetDir -Force
101+
}
102+
Write-Host "Test plans:"
103+
Get-ChildItem $targetDir -Filter "*.yaml" | ForEach-Object { Write-Host " $($_.Name)" }
89104
90105
- name: Run ${{ matrix.plan }}
91106
shell: pwsh
92-
working-directory: javaext-autotest
93107
env:
94108
AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
95109
AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
96110
AZURE_OPENAI_DEPLOYMENT: ${{ secrets.AZURE_OPENAI_DEPLOYMENT }}
97-
run: npx autotest run "test-plans/${{ matrix.plan }}.yaml"
111+
run: autotest run "test-plans/${{ matrix.plan }}.yaml"
98112

99113
- name: Upload results
100114
if: always()
101115
uses: actions/upload-artifact@v4
102116
with:
103117
name: results-${{ matrix.plan }}
104-
path: javaext-autotest/test-results/
118+
path: test-results/
105119
retention-days: 30
106120

107121
# ── Job 2b: Run a single test plan (when specified) ─────
@@ -111,11 +125,8 @@ jobs:
111125
timeout-minutes: 30
112126

113127
steps:
114-
- name: Checkout javaext-autotest
128+
- name: Checkout vscode-java-pack
115129
uses: actions/checkout@v4
116-
with:
117-
repository: wenytang-ms/javaext-autotest
118-
path: javaext-autotest
119130

120131
- name: Checkout vscode-java
121132
uses: actions/checkout@v4
@@ -153,25 +164,34 @@ jobs:
153164
distribution: temurin
154165
java-version: 21
155166

156-
- name: Install and build autotest
157-
working-directory: javaext-autotest
158-
run: npm ci && npm run build
167+
- name: Install autotest CLI
168+
run: npm install -g @vscjava/vscode-autotest
169+
170+
- name: Sync test plans from npm package
171+
shell: pwsh
172+
run: |
173+
$pkgDir = (npm root -g) + "/@vscjava/vscode-autotest"
174+
$targetDir = "test-plans"
175+
if (!(Test-Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir | Out-Null }
176+
Copy-Item "$pkgDir/test-plans/*.yaml" $targetDir -Force
177+
if (Test-Path "test-plans-local") {
178+
Copy-Item "test-plans-local/*.yaml" $targetDir -Force
179+
}
159180
160181
- name: Run ${{ inputs.test_plan }}
161182
shell: pwsh
162-
working-directory: javaext-autotest
163183
env:
164184
AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
165185
AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
166186
AZURE_OPENAI_DEPLOYMENT: ${{ secrets.AZURE_OPENAI_DEPLOYMENT }}
167-
run: npx autotest run "test-plans/${{ inputs.test_plan }}"
187+
run: autotest run "test-plans/${{ inputs.test_plan }}"
168188

169189
- name: Upload results
170190
if: always()
171191
uses: actions/upload-artifact@v4
172192
with:
173193
name: e2e-test-results
174-
path: javaext-autotest/test-results/
194+
path: test-results/
175195
retention-days: 30
176196

177197
# ── Job 3: Aggregate analysis ───────────────────────────
@@ -181,18 +201,13 @@ jobs:
181201
runs-on: ubuntu-latest
182202

183203
steps:
184-
- name: Checkout javaext-autotest
185-
uses: actions/checkout@v4
186-
with:
187-
repository: wenytang-ms/javaext-autotest
188-
189204
- name: Setup Node.js
190205
uses: actions/setup-node@v4
191206
with:
192207
node-version: 20
193208

194-
- name: Install and build autotest
195-
run: npm ci && npm run build
209+
- name: Install autotest CLI
210+
run: npm install -g @vscjava/vscode-autotest
196211

197212
- name: Download all results
198213
uses: actions/download-artifact@v4
@@ -209,7 +224,6 @@ jobs:
209224
if [ -d "$dir/$plan" ]; then
210225
cp -r "$dir/$plan" "test-results/$plan"
211226
elif [ -d "$dir" ]; then
212-
# Results may be nested differently
213227
find "$dir" -name "results.json" -exec dirname {} \; | while read d; do
214228
name=$(basename "$d")
215229
cp -r "$d" "test-results/$name"
@@ -224,7 +238,7 @@ jobs:
224238
AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
225239
AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
226240
AZURE_OPENAI_DEPLOYMENT: ${{ secrets.AZURE_OPENAI_DEPLOYMENT }}
227-
run: npx autotest analyze test-results --output test-results
241+
run: autotest analyze test-results --output test-results
228242

229243
- name: Write Job Summary
230244
if: always()

AGENTS.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# vscode-java-pack (Extension Pack for Java)
2+
3+
VS Code Java 元扩展,捆绑并协调 Java 开发完整体验。
4+
5+
## 项目定位
6+
7+
- **仓库**: https://github.com/microsoft/vscode-java-pack
8+
- **Extension ID**: vscjava.vscode-java-pack
9+
- **构建工具**: npm + Webpack + React/Redux
10+
- **入口**: `out/extension`
11+
12+
## 捆绑的扩展
13+
14+
1. **redhat.java** — Language Support for Java
15+
2. **vscjava.vscode-java-debug** — Debugger for Java
16+
3. **vscjava.vscode-java-test** — Test Runner for Java
17+
4. **vscjava.vscode-maven** — Maven for Java
18+
5. **vscjava.vscode-gradle** — Gradle for Java
19+
6. **vscjava.vscode-java-dependency** — Project Manager for Java
20+
21+
## 关键功能
22+
23+
- 引导式入门向导 (walkthrough)
24+
- 集中化 Java 配置
25+
- JDK 发现和安装引导
26+
- 帮助中心和发行说明
27+
- 格式化器设置编辑器 (React UI)
28+
- Java 运行时配置
29+
30+
## 技术栈
31+
32+
- TypeScript + React + Redux + Bootstrap (UI 页面)
33+
- Webpack 捆绑
34+
- Axios (HTTP 请求)
35+
36+
## 依赖关系
37+
38+
**依赖**: 上述 6 个扩展
39+
**独立**: 不被其他项目依赖

test-plans/java-basic-editing.yaml

Lines changed: 0 additions & 78 deletions
This file was deleted.

test-plans/java-debugger.yaml

Lines changed: 0 additions & 63 deletions
This file was deleted.

0 commit comments

Comments
 (0)