Update tests to expect warnings instead of errors for non-5xx cache failures
Co-authored-by: Link- <[email protected]>
This commit is contained in:
co-authored by
Link-
parent
513216f1dd
commit
cf3aaeb491
Vendored
+1166
File diff suppressed because it is too large
Load Diff
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
893710042127256768
|
||||||
Vendored
+20961
File diff suppressed because it is too large
Load Diff
Vendored
+21535
File diff suppressed because it is too large
Load Diff
Vendored
+32
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"run": {
|
||||||
|
"command": "lerna run tsc",
|
||||||
|
"startTime": "2025-07-14T11:59:59.917Z",
|
||||||
|
"endTime": "2025-07-14T12:00:02.973Z",
|
||||||
|
"inner": false
|
||||||
|
},
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"taskId": "@actions/io:tsc",
|
||||||
|
"target": "tsc",
|
||||||
|
"projectName": "@actions/io",
|
||||||
|
"hash": "6383941984474854638",
|
||||||
|
"startTime": "2025-07-14T11:59:59.945Z",
|
||||||
|
"endTime": "2025-07-14T12:00:02.841Z",
|
||||||
|
"params": "",
|
||||||
|
"cacheStatus": "cache-miss",
|
||||||
|
"status": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"taskId": "@actions/http-client:tsc",
|
||||||
|
"target": "tsc",
|
||||||
|
"projectName": "@actions/http-client",
|
||||||
|
"hash": "18096640051185404072",
|
||||||
|
"startTime": "2025-07-14T11:59:59.945Z",
|
||||||
|
"endTime": "2025-07-14T12:00:02.972Z",
|
||||||
|
"params": "",
|
||||||
|
"cacheStatus": "cache-miss",
|
||||||
|
"status": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
|
||||||
|
> @actions/[email protected] tsc
|
||||||
|
> tsc
|
||||||
|
|
||||||
|
src/auth.ts(1,23): error TS2307: Cannot find module 'http' or its corresponding type declarations.
|
||||||
|
src/auth.ts(18,49): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/auth.ts(74,49): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(3,23): error TS2307: Cannot find module 'http' or its corresponding type declarations.
|
||||||
|
src/index.ts(4,24): error TS2307: Cannot find module 'https' or its corresponding type declarations.
|
||||||
|
src/index.ts(6,22): error TS2307: Cannot find module 'net' or its corresponding type declarations.
|
||||||
|
src/index.ts(8,25): error TS2307: Cannot find module 'tunnel' or its corresponding type declarations.
|
||||||
|
src/index.ts(9,26): error TS2307: Cannot find module 'undici' or its corresponding type declarations.
|
||||||
|
src/index.ts(95,20): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(97,39): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(98,18): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(107,36): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(108,24): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(109,21): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(111,39): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(116,17): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(241,13): error TS2503: Cannot find namespace 'NodeJS'.
|
||||||
|
src/index.ts(347,20): error TS2503: Cannot find namespace 'NodeJS'.
|
||||||
|
src/index.ts(359,48): error TS2550: Property 'includes' does not exist on type 'string[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2016' or later.
|
||||||
|
src/index.ts(395,27): error TS2550: Property 'includes' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2016' or later.
|
||||||
|
src/index.ts(438,33): error TS2550: Property 'includes' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2016' or later.
|
||||||
|
src/index.ts(473,20): error TS2503: Cannot find namespace 'NodeJS'.
|
||||||
|
src/index.ts(499,20): error TS2503: Cannot find namespace 'NodeJS'.
|
||||||
|
src/index.ts(506,48): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/index.ts(729,25): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/interfaces.ts(1,23): error TS2307: Cannot find module 'http' or its corresponding type declarations.
|
||||||
|
src/interfaces.ts(2,24): error TS2307: Cannot find module 'https' or its corresponding type declarations.
|
||||||
|
src/interfaces.ts(36,13): error TS2503: Cannot find namespace 'NodeJS'.
|
||||||
|
src/interfaces.ts(42,20): error TS2503: Cannot find namespace 'NodeJS'.
|
||||||
|
src/interfaces.ts(47,20): error TS2503: Cannot find namespace 'NodeJS'.
|
||||||
|
src/interfaces.ts(51,20): error TS2503: Cannot find namespace 'NodeJS'.
|
||||||
|
src/interfaces.ts(62,20): error TS2503: Cannot find namespace 'NodeJS'.
|
||||||
|
src/proxy.ts(10,14): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/proxy.ts(10,44): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/proxy.ts(12,14): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/proxy.ts(12,43): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/proxy.ts(38,19): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/proxy.ts(38,46): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
> @actions/[email protected] tsc
|
||||||
|
> tsc
|
||||||
|
|
||||||
|
src/io-util.ts(1,21): error TS2307: Cannot find module 'fs' or its corresponding type declarations.
|
||||||
|
src/io-util.ts(2,23): error TS2307: Cannot find module 'path' or its corresponding type declarations.
|
||||||
|
src/io-util.ts(20,27): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/io-util.ts(171,7): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/io-util.ts(172,21): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/io-util.ts(174,7): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/io-util.ts(175,21): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/io-util.ts(181,10): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/io.ts(1,18): error TS2307: Cannot find module 'assert' or its corresponding type declarations.
|
||||||
|
src/io.ts(2,23): error TS2307: Cannot find module 'path' or its corresponding type declarations.
|
||||||
|
src/io.ts(200,28): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/io.ts(201,29): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/io.ts(232,7): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
|
src/io.ts(233,21): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
|||||||
|
13182328228597024267
|
||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+9
-9
@@ -50,7 +50,7 @@ test('save with large cache outputs should fail', async () => {
|
|||||||
const cachePaths = [path.resolve(filePath)]
|
const cachePaths = [path.resolve(filePath)]
|
||||||
|
|
||||||
const createTarMock = jest.spyOn(tar, 'createTar')
|
const createTarMock = jest.spyOn(tar, 'createTar')
|
||||||
const logErrorMock = jest.spyOn(core, 'error')
|
const logWarningMock = jest.spyOn(core, 'warning')
|
||||||
|
|
||||||
const cacheSize = 11 * 1024 * 1024 * 1024 //~11GB, over the 10GB limit
|
const cacheSize = 11 * 1024 * 1024 * 1024 //~11GB, over the 10GB limit
|
||||||
jest
|
jest
|
||||||
@@ -63,8 +63,8 @@ test('save with large cache outputs should fail', async () => {
|
|||||||
|
|
||||||
const cacheId = await saveCache([filePath], primaryKey)
|
const cacheId = await saveCache([filePath], primaryKey)
|
||||||
expect(cacheId).toBe(-1)
|
expect(cacheId).toBe(-1)
|
||||||
expect(logErrorMock).toHaveBeenCalledTimes(1)
|
expect(logWarningMock).toHaveBeenCalledTimes(1)
|
||||||
expect(logErrorMock).toHaveBeenCalledWith(
|
expect(logWarningMock).toHaveBeenCalledWith(
|
||||||
'Failed to save: Cache size of ~11264 MB (11811160064 B) is over the 10GB limit, not saving cache.'
|
'Failed to save: Cache size of ~11264 MB (11811160064 B) is over the 10GB limit, not saving cache.'
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ test('save with large cache outputs should fail in GHES with error message', asy
|
|||||||
const cachePaths = [path.resolve(filePath)]
|
const cachePaths = [path.resolve(filePath)]
|
||||||
|
|
||||||
const createTarMock = jest.spyOn(tar, 'createTar')
|
const createTarMock = jest.spyOn(tar, 'createTar')
|
||||||
const logErrorMock = jest.spyOn(core, 'error')
|
const logWarningMock = jest.spyOn(core, 'warning')
|
||||||
|
|
||||||
const cacheSize = 11 * 1024 * 1024 * 1024 //~11GB, over the 10GB limit
|
const cacheSize = 11 * 1024 * 1024 * 1024 //~11GB, over the 10GB limit
|
||||||
jest
|
jest
|
||||||
@@ -115,8 +115,8 @@ test('save with large cache outputs should fail in GHES with error message', asy
|
|||||||
|
|
||||||
const cacheId = await saveCache([filePath], primaryKey)
|
const cacheId = await saveCache([filePath], primaryKey)
|
||||||
expect(cacheId).toBe(-1)
|
expect(cacheId).toBe(-1)
|
||||||
expect(logErrorMock).toHaveBeenCalledTimes(1)
|
expect(logWarningMock).toHaveBeenCalledTimes(1)
|
||||||
expect(logErrorMock).toHaveBeenCalledWith(
|
expect(logWarningMock).toHaveBeenCalledWith(
|
||||||
'Failed to save: The cache filesize must be between 0 and 1073741824 bytes'
|
'Failed to save: The cache filesize must be between 0 and 1073741824 bytes'
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -137,7 +137,7 @@ test('save with large cache outputs should fail in GHES without error message',
|
|||||||
const cachePaths = [path.resolve(filePath)]
|
const cachePaths = [path.resolve(filePath)]
|
||||||
|
|
||||||
const createTarMock = jest.spyOn(tar, 'createTar')
|
const createTarMock = jest.spyOn(tar, 'createTar')
|
||||||
const logErrorMock = jest.spyOn(core, 'error')
|
const logWarningMock = jest.spyOn(core, 'warning')
|
||||||
|
|
||||||
const cacheSize = 11 * 1024 * 1024 * 1024 //~11GB, over the 10GB limit
|
const cacheSize = 11 * 1024 * 1024 * 1024 //~11GB, over the 10GB limit
|
||||||
jest
|
jest
|
||||||
@@ -163,8 +163,8 @@ test('save with large cache outputs should fail in GHES without error message',
|
|||||||
|
|
||||||
const cacheId = await saveCache([filePath], primaryKey)
|
const cacheId = await saveCache([filePath], primaryKey)
|
||||||
expect(cacheId).toBe(-1)
|
expect(cacheId).toBe(-1)
|
||||||
expect(logErrorMock).toHaveBeenCalledTimes(1)
|
expect(logWarningMock).toHaveBeenCalledTimes(1)
|
||||||
expect(logErrorMock).toHaveBeenCalledWith(
|
expect(logWarningMock).toHaveBeenCalledWith(
|
||||||
'Failed to save: Cache size of ~11264 MB (11811160064 B) is over the data cap limit, not saving cache.'
|
'Failed to save: Cache size of ~11264 MB (11811160064 B) is over the data cap limit, not saving cache.'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -65,7 +65,7 @@ test('save with large cache outputs should fail using', async () => {
|
|||||||
const cachePaths = [path.resolve(paths)]
|
const cachePaths = [path.resolve(paths)]
|
||||||
|
|
||||||
const createTarMock = jest.spyOn(tar, 'createTar')
|
const createTarMock = jest.spyOn(tar, 'createTar')
|
||||||
const logErrorMock = jest.spyOn(core, 'error')
|
const logWarningMock = jest.spyOn(core, 'warning')
|
||||||
|
|
||||||
const cacheSize = 11 * 1024 * 1024 * 1024 //~11GB, over the 10GB limit
|
const cacheSize = 11 * 1024 * 1024 * 1024 //~11GB, over the 10GB limit
|
||||||
jest
|
jest
|
||||||
@@ -78,7 +78,7 @@ test('save with large cache outputs should fail using', async () => {
|
|||||||
|
|
||||||
const cacheId = await saveCache([paths], key)
|
const cacheId = await saveCache([paths], key)
|
||||||
expect(cacheId).toBe(-1)
|
expect(cacheId).toBe(-1)
|
||||||
expect(logErrorMock).toHaveBeenCalledWith(
|
expect(logWarningMock).toHaveBeenCalledWith(
|
||||||
'Failed to save: Cache size of ~11264 MB (11811160064 B) is over the 10GB limit, not saving cache.'
|
'Failed to save: Cache size of ~11264 MB (11811160064 B) is over the 10GB limit, not saving cache.'
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -227,7 +227,7 @@ test('finalize save cache failure', async () => {
|
|||||||
const paths = 'node_modules'
|
const paths = 'node_modules'
|
||||||
const key = 'Linux-node-bb828da54c148048dd17899ba9fda624811cfb43'
|
const key = 'Linux-node-bb828da54c148048dd17899ba9fda624811cfb43'
|
||||||
const cachePaths = [path.resolve(paths)]
|
const cachePaths = [path.resolve(paths)]
|
||||||
const logErrorMock = jest.spyOn(core, 'error')
|
const logWarningMock = jest.spyOn(core, 'warning')
|
||||||
const signedUploadURL = 'https://blob-storage.local?signed=true'
|
const signedUploadURL = 'https://blob-storage.local?signed=true'
|
||||||
const archiveFileSize = 1024
|
const archiveFileSize = 1024
|
||||||
const options: UploadOptions = {
|
const options: UploadOptions = {
|
||||||
@@ -292,7 +292,7 @@ test('finalize save cache failure', async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
expect(cacheId).toBe(-1)
|
expect(cacheId).toBe(-1)
|
||||||
expect(logErrorMock).toHaveBeenCalledWith(
|
expect(logWarningMock).toHaveBeenCalledWith(
|
||||||
`Failed to save: Unable to finalize cache with key ${key}, another job may be finalizing this cache.`
|
`Failed to save: Unable to finalize cache with key ${key}, another job may be finalizing this cache.`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|||||||
Vendored
+16
-5
@@ -13,6 +13,8 @@ import {
|
|||||||
GetCacheEntryDownloadURLRequest
|
GetCacheEntryDownloadURLRequest
|
||||||
} from './generated/results/api/v1/cache'
|
} from './generated/results/api/v1/cache'
|
||||||
import {CacheFileSizeLimit} from './internal/constants'
|
import {CacheFileSizeLimit} from './internal/constants'
|
||||||
|
import {isServerErrorStatusCode} from './internal/requestUtils'
|
||||||
|
import {HttpClientError} from '@actions/http-client'
|
||||||
export class ValidationError extends Error {
|
export class ValidationError extends Error {
|
||||||
constructor(message: string) {
|
constructor(message: string) {
|
||||||
super(message)
|
super(message)
|
||||||
@@ -29,6 +31,15 @@ export class ReserveCacheError extends Error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function logCacheError(message: string, error: Error): void {
|
||||||
|
// Log server errors (5xx) as errors, all other errors as warnings
|
||||||
|
if (error instanceof HttpClientError && isServerErrorStatusCode(error.statusCode)) {
|
||||||
|
core.error(message)
|
||||||
|
} else {
|
||||||
|
core.warning(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function checkPaths(paths: string[]): void {
|
function checkPaths(paths: string[]): void {
|
||||||
if (!paths || paths.length === 0) {
|
if (!paths || paths.length === 0) {
|
||||||
throw new ValidationError(
|
throw new ValidationError(
|
||||||
@@ -199,8 +210,8 @@ async function restoreCacheV1(
|
|||||||
if (typedError.name === ValidationError.name) {
|
if (typedError.name === ValidationError.name) {
|
||||||
throw error
|
throw error
|
||||||
} else {
|
} else {
|
||||||
// Log cache related errors
|
// warn on cache restore failure and continue build
|
||||||
core.error(`Failed to restore: ${(error as Error).message}`)
|
core.warning(`Failed to restore: ${(error as Error).message}`)
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
// Try to delete the archive to save space
|
// Try to delete the archive to save space
|
||||||
@@ -318,7 +329,7 @@ async function restoreCacheV2(
|
|||||||
throw error
|
throw error
|
||||||
} else {
|
} else {
|
||||||
// Log cache related errors
|
// Log cache related errors
|
||||||
core.error(`Failed to restore: ${(error as Error).message}`)
|
logCacheError(`Failed to restore: ${(error as Error).message}`, typedError)
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
@@ -450,7 +461,7 @@ async function saveCacheV1(
|
|||||||
} else if (typedError.name === ReserveCacheError.name) {
|
} else if (typedError.name === ReserveCacheError.name) {
|
||||||
core.info(`Failed to save: ${typedError.message}`)
|
core.info(`Failed to save: ${typedError.message}`)
|
||||||
} else {
|
} else {
|
||||||
core.error(`Failed to save: ${typedError.message}`)
|
core.warning(`Failed to save: ${typedError.message}`)
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
// Try to delete the archive to save space
|
// Try to delete the archive to save space
|
||||||
@@ -589,7 +600,7 @@ async function saveCacheV2(
|
|||||||
} else if (typedError.name === ReserveCacheError.name) {
|
} else if (typedError.name === ReserveCacheError.name) {
|
||||||
core.info(`Failed to save: ${typedError.message}`)
|
core.info(`Failed to save: ${typedError.message}`)
|
||||||
} else {
|
} else {
|
||||||
core.error(`Failed to save: ${typedError.message}`)
|
logCacheError(`Failed to save: ${typedError.message}`, typedError)
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
// Try to delete the archive to save space
|
// Try to delete the archive to save space
|
||||||
|
|||||||
Reference in New Issue
Block a user