🐛 fix(vscode): GitHub 工单已被删除(410)时按不存在处理,不再报错
This commit is contained in:
1 parent
5e62842cfa
commit
2dabbf1200
2 files changed
+7
-2
No files matched your search
@@ -148,6 +148,11 @@ describe('工单', () => {
|
|||||||
expect(await p.getIssue(9)).toBeNull()
|
expect(await p.getIssue(9)).toBeNull()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('工单已被删除(410)也返回 null', async () => {
|
||||||
|
stubFetch(new Response('{"message":"This issue was deleted"}', { status: 410 }))
|
||||||
|
expect(await provider().getIssue(5)).toBeNull()
|
||||||
|
})
|
||||||
|
|
||||||
it('其它失败照常抛 ForgeApiError', async () => {
|
it('其它失败照常抛 ForgeApiError', async () => {
|
||||||
stubFetch(new Response('boom', { status: 500 }))
|
stubFetch(new Response('boom', { status: 500 }))
|
||||||
await expect(provider().getIssue(1)).rejects.toBeInstanceOf(ForgeApiError)
|
await expect(provider().getIssue(1)).rejects.toBeInstanceOf(ForgeApiError)
|
||||||
|
|||||||
@@ -251,14 +251,14 @@ export class GitHubProvider implements ForgeProvider {
|
|||||||
return raws.filter(raw => raw.pull_request === undefined).map(toIssue)
|
return raws.filter(raw => raw.pull_request === undefined).map(toIssue)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 这个编号是 PR 时也返回 `null`。 */
|
/** 工单不存在(404)、已被删除(GitHub 回 410)或这个编号其实是 PR 时都返回 `null`。 */
|
||||||
async getIssue(issueNumber: number): Promise<ForgeIssue | null> {
|
async getIssue(issueNumber: number): Promise<ForgeIssue | null> {
|
||||||
try {
|
try {
|
||||||
const raw = await this.rawIssue(issueNumber)
|
const raw = await this.rawIssue(issueNumber)
|
||||||
return raw.pull_request === undefined ? toIssue(raw) : null
|
return raw.pull_request === undefined ? toIssue(raw) : null
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
if (err instanceof ForgeApiError && err.status === 404)
|
if (err instanceof ForgeApiError && (err.status === 404 || err.status === 410))
|
||||||
return null
|
return null
|
||||||
throw err
|
throw err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user