refactor(release-cleanup): 將清理邏輯由 bash 改寫為 Node.js #6
@@ -112,6 +112,17 @@ test('fetchAllPages 在 fetch 因逾時拋出 AbortError 時向外拋出', async
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('fetchAllPages 在 fetch 拋出一般網路錯誤時向外拋出', async () => {
|
||||||
|
globalThis.fetch = async () => {
|
||||||
|
throw new TypeError('fetch failed: ECONNREFUSED')
|
||||||
|
}
|
||||||
|
const client = new GiteaClient({})
|
||||||
|
await assert.rejects(
|
||||||
|
() => client.fetchAllPages('https://example.com/api'),
|
||||||
|
/fetch failed|ECONNREFUSED/,
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
test('fetchAllPages 在頁數超過 MAX_PAGES 時中止以避免無限迴圈', async () => {
|
test('fetchAllPages 在頁數超過 MAX_PAGES 時中止以避免無限迴圈', async () => {
|
||||||
// 永遠回傳非空陣列,模擬 API 不以空陣列結尾的異常情形
|
// 永遠回傳非空陣列,模擬 API 不以空陣列結尾的異常情形
|
||||||
globalThis.fetch = async () => jsonResponse([{ id: 1 }])
|
globalThis.fetch = async () => jsonResponse([{ id: 1 }])
|
||||||
|
|||||||
@@ -19,6 +19,11 @@ test('selectReleasesToDelete 在數量不超過保留數時回傳空陣列', ()
|
|||||||
assert.deepEqual(selectReleasesToDelete(releases, 5), [])
|
assert.deepEqual(selectReleasesToDelete(releases, 5), [])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('selectReleasesToDelete 對空陣列回傳空陣列', () => {
|
||||||
|
assert.deepEqual(selectReleasesToDelete([], 1), [])
|
||||||
|
assert.deepEqual(selectReleasesToDelete([], 0), [])
|
||||||
|
})
|
||||||
|
|
||||||
test('selectReleasesToDelete 在 keepCount 為 0 時刪除全部(由新到舊)', () => {
|
test('selectReleasesToDelete 在 keepCount 為 0 時刪除全部(由新到舊)', () => {
|
||||||
const toDelete = selectReleasesToDelete(releases, 0)
|
const toDelete = selectReleasesToDelete(releases, 0)
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
|
|||||||
Reference in New Issue
Block a user