⚡ perf(vscode): 摘修复用本地合并记录分组,列表改手风琴

This commit is contained in:
cruldra committed 2026-09-01 19:03:56 +08:00
1 parent cfabee08b7
commit 5284fc1730
8 files changed
+183 -221

No files matched your search

+28
View File
@@ -13,6 +13,8 @@ import {
pickCurrentRelease,
todayReleaseBranch,
groupCommitsByPr,
parseGiteaMergeSubject,
indexUnreleasedByMergePr,
} from '../../src/git/release'
const gitEnv = { ...process.env, GIT_CONFIG_NOSYSTEM: '1', GIT_CONFIG_GLOBAL: '/dev/null', GIT_TERMINAL_PROMPT: '0', GIT_AUTHOR_NAME: 't', GIT_AUTHOR_EMAIL: 't@t', GIT_COMMITTER_NAME: 't', GIT_COMMITTER_EMAIL: 't@t' }
@@ -57,6 +59,13 @@ describe('纯函数', () => {
expect(pickCurrentRelease('release/', ['main', 'release/2026-08-01', 'release/2026-08-31', 'hotfix/2027'])).toBe('release/2026-08-31')
expect(pickCurrentRelease('release/', ['main'])).toBeUndefined()
})
it('parseGiteaMergeSubject 认 Gitea 合并说明', () => {
expect(parseGiteaMergeSubject("Merge pull request '连续包月会员订阅体系' (#260) from feature/monthly-membership into main")).toEqual({
number: 260,
title: '连续包月会员订阅体系',
})
expect(parseGiteaMergeSubject('fix: no merge')).toBeUndefined()
})
it('groupCommitsByPr 按 Gitea 给的 pr 号分组,说明里没有 Closes 也能归组', () => {
const groups = groupCommitsByPr([
{ sha: '3e519ea', subject: 'fix(admin): 会员档位隐藏', author: 'chehongweo', date: '2026-08-31', body: '', pr: 260, prTitle: '连续包月会员订阅体系' },
@@ -133,4 +142,23 @@ describe('集成', () => {
git(fx.repo, ['fetch', 'origin'])
expect(await listReleaseBranches({ cwd: fx.repo, prefix: 'release/' })).toEqual(['release/2026-08-31', 'release/2026-08-01'])
})
it('indexUnreleasedByMergePr 用本地合并记录把分支提交对上 PR', async () => {
fx = await setup()
await cutRelease({ cwd: fx.repo, devBranch: 'main', branch: 'release/2026-08-31' })
git(fx.peer, ['checkout', '-b', 'feature'])
const a = commit(fx.peer, 'b.txt', 'b', 'fix(admin): 会员档位隐藏')
const b = commit(fx.peer, 'c.txt', 'c', 'fix(membership): 年付月度发卡')
git(fx.peer, ['checkout', 'main'])
git(fx.peer, ['merge', '--no-ff', '-m', "Merge pull request '连续包月会员订阅体系' (#260) from feature into main", 'feature'])
git(fx.peer, ['push', 'origin', 'main'])
git(fx.repo, ['fetch', 'origin'])
const map = await indexUnreleasedByMergePr({
cwd: fx.repo,
current: 'release/2026-08-31',
devBranch: 'main',
shas: [a, b],
})
expect(map.get(a)).toEqual({ number: 260, title: '连续包月会员订阅体系' })
expect(map.get(b)).toEqual({ number: 260, title: '连续包月会员订阅体系' })
})
})