This commit is contained in:
Salman Muin Kayser Chishti
2025-07-31 23:48:44 +01:00
parent 717b895584
commit ece2273b24
5 changed files with 113 additions and 46 deletions
+19 -5
View File
@@ -7,7 +7,7 @@
"name": "root", "name": "root",
"devDependencies": { "devDependencies": {
"@types/jest": "^29.5.4", "@types/jest": "^29.5.4",
"@types/node": "^20.5.7", "@types/node": "^24.1.0",
"@types/signale": "^1.4.1", "@types/signale": "^1.4.1",
"concurrently": "^6.1.0", "concurrently": "^6.1.0",
"eslint": "^8.0.1", "eslint": "^8.0.1",
@@ -22,6 +22,9 @@
"prettier": "^3.0.0", "prettier": "^3.0.0",
"ts-jest": "^29.1.1", "ts-jest": "^29.1.1",
"typescript": "^5.2.2" "typescript": "^5.2.2"
},
"engines": {
"node": ">=24.0.0"
} }
}, },
"node_modules/@aashutoshrathi/word-wrap": { "node_modules/@aashutoshrathi/word-wrap": {
@@ -4199,10 +4202,14 @@
"dev": true "dev": true
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "20.5.7", "version": "24.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz",
"integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==", "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==",
"dev": true "dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~7.8.0"
}
}, },
"node_modules/@types/normalize-package-data": { "node_modules/@types/normalize-package-data": {
"version": "2.4.4", "version": "2.4.4",
@@ -14059,6 +14066,13 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/undici-types": {
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
"dev": true,
"license": "MIT"
},
"node_modules/unique-filename": { "node_modules/unique-filename": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
+12 -8
View File
@@ -225,20 +225,25 @@ test('save with server error should fail', async () => {
const filePath = 'node_modules' const filePath = 'node_modules'
const primaryKey = 'Linux-node-bb828da54c148048dd17899ba9fda624811cfb43' const primaryKey = 'Linux-node-bb828da54c148048dd17899ba9fda624811cfb43'
const logErrorMock = jest.spyOn(core, 'error') const logErrorMock = jest.spyOn(core, 'error')
const logWarningMock = jest.spyOn(core, 'warning') // Removing the unused variable logWarningMock
// Mock cache service version to V2 // Mock cache service version to V2
const getCacheServiceVersionMock = jest.spyOn(config, 'getCacheServiceVersion').mockReturnValue('v2') const getCacheServiceVersionMock = jest
.spyOn(config, 'getCacheServiceVersion')
.mockReturnValue('v2')
// Mock V2 CreateCacheEntry to succeed // Mock V2 CreateCacheEntry to succeed
const createCacheEntryMock = jest const createCacheEntryMock = jest
.spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry') .spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry')
.mockReturnValue( .mockReturnValue(
Promise.resolve({ok: true, signedUploadUrl: 'https://blob-storage.local?signed=true'}) Promise.resolve({
ok: true,
signedUploadUrl: 'https://blob-storage.local?signed=true'
})
) )
// Mock the FinalizeCacheEntryUpload to succeed (since the error should happen in saveCache) // Mock the FinalizeCacheEntryUpload to succeed (since the error should happen in saveCache)
const finalizeCacheEntryMock = jest jest
.spyOn(CacheServiceClientJSON.prototype, 'FinalizeCacheEntryUpload') .spyOn(CacheServiceClientJSON.prototype, 'FinalizeCacheEntryUpload')
.mockReturnValue(Promise.resolve({ok: true, entryId: '4'})) .mockReturnValue(Promise.resolve({ok: true, entryId: '4'}))
@@ -257,7 +262,7 @@ test('save with server error should fail', async () => {
.mockReturnValueOnce(Promise.resolve(compression)) .mockReturnValueOnce(Promise.resolve(compression))
await saveCache([filePath], primaryKey) await saveCache([filePath], primaryKey)
expect(logErrorMock).toHaveBeenCalledTimes(1) expect(logErrorMock).toHaveBeenCalledTimes(1)
expect(logErrorMock).toHaveBeenCalledWith( expect(logErrorMock).toHaveBeenCalledWith(
'Failed to save: HTTP Error Occurred' 'Failed to save: HTTP Error Occurred'
@@ -266,7 +271,7 @@ test('save with server error should fail', async () => {
expect(createCacheEntryMock).toHaveBeenCalledTimes(1) expect(createCacheEntryMock).toHaveBeenCalledTimes(1)
const archiveFolder = '/foo/bar' const archiveFolder = '/foo/bar'
const cachePaths = [path.resolve(filePath)] const cachePaths = [path.resolve(filePath)]
const archiveFile = path.join(archiveFolder, CacheFilename.Zstd) // Removing the unused variable archiveFile
expect(createTarMock).toHaveBeenCalledTimes(1) expect(createTarMock).toHaveBeenCalledTimes(1)
expect(createTarMock).toHaveBeenCalledWith( expect(createTarMock).toHaveBeenCalledWith(
archiveFolder, archiveFolder,
@@ -275,8 +280,7 @@ test('save with server error should fail', async () => {
) )
expect(saveCacheMock).toHaveBeenCalledTimes(1) expect(saveCacheMock).toHaveBeenCalledTimes(1)
expect(getCompressionMock).toHaveBeenCalledTimes(1) expect(getCompressionMock).toHaveBeenCalledTimes(1)
expect(getCompressionMock).toHaveBeenCalledTimes(1)
// Restore the getCacheServiceVersion mock to its original state // Restore the getCacheServiceVersion mock to its original state
getCacheServiceVersionMock.mockRestore() getCacheServiceVersionMock.mockRestore()
}) })
+18 -15
View File
@@ -21,9 +21,12 @@
}, },
"devDependencies": { "devDependencies": {
"@protobuf-ts/plugin": "^2.9.4", "@protobuf-ts/plugin": "^2.9.4",
"@types/node": "^22.13.9", "@types/node": "^24.1.0",
"@types/semver": "^6.0.0", "@types/semver": "^6.0.0",
"typescript": "^5.2.2" "typescript": "^5.2.2"
},
"engines": {
"node": ">=24.0.0"
} }
}, },
"node_modules/@actions/core": { "node_modules/@actions/core": {
@@ -335,12 +338,12 @@
} }
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "22.13.9", "version": "24.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.9.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz",
"integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==", "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~6.20.0" "undici-types": "~7.8.0"
} }
}, },
"node_modules/@types/node-fetch": { "node_modules/@types/node-fetch": {
@@ -770,9 +773,9 @@
} }
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "6.20.0", "version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/webidl-conversions": { "node_modules/webidl-conversions": {
@@ -1060,11 +1063,11 @@
} }
}, },
"@types/node": { "@types/node": {
"version": "22.13.9", "version": "24.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.9.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz",
"integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==", "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==",
"requires": { "requires": {
"undici-types": "~6.20.0" "undici-types": "~7.8.0"
} }
}, },
"@types/node-fetch": { "@types/node-fetch": {
@@ -1353,9 +1356,9 @@
"dev": true "dev": true
}, },
"undici-types": { "undici-types": {
"version": "6.20.0", "version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw=="
}, },
"webidl-conversions": { "webidl-conversions": {
"version": "3.0.1", "version": "3.0.1",
+32 -9
View File
@@ -13,7 +13,10 @@
"@actions/http-client": "^2.0.1" "@actions/http-client": "^2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^16.18.112" "@types/node": "^24.1.0"
},
"engines": {
"node": ">=24.0.0"
} }
}, },
"node_modules/@actions/exec": { "node_modules/@actions/exec": {
@@ -38,10 +41,14 @@
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==" "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "16.18.112", "version": "24.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.112.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz",
"integrity": "sha512-EKrbKUGJROm17+dY/gMi31aJlGLJ75e1IkTojt9n6u+hnaTBDs+M1bIdOawpk2m6YUAXq/R2W0SxCng1tndHCg==", "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==",
"dev": true "dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~7.8.0"
}
}, },
"node_modules/tunnel": { "node_modules/tunnel": {
"version": "0.0.6", "version": "0.0.6",
@@ -50,6 +57,13 @@
"engines": { "engines": {
"node": ">=0.6.11 <=0.7.0 || >=0.7.3" "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
} }
},
"node_modules/undici-types": {
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
"dev": true,
"license": "MIT"
} }
}, },
"dependencies": { "dependencies": {
@@ -75,15 +89,24 @@
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==" "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
}, },
"@types/node": { "@types/node": {
"version": "16.18.112", "version": "24.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.112.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz",
"integrity": "sha512-EKrbKUGJROm17+dY/gMi31aJlGLJ75e1IkTojt9n6u+hnaTBDs+M1bIdOawpk2m6YUAXq/R2W0SxCng1tndHCg==", "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==",
"dev": true "dev": true,
"requires": {
"undici-types": "~7.8.0"
}
}, },
"tunnel": { "tunnel": {
"version": "0.0.6", "version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
},
"undici-types": {
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
"dev": true
} }
} }
} }
+32 -9
View File
@@ -13,10 +13,13 @@
"undici": "^5.28.5" "undici": "^5.28.5"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "20.7.1", "@types/node": "24.1.0",
"@types/proxy": "^1.0.1", "@types/proxy": "^1.0.1",
"@types/tunnel": "0.0.3", "@types/tunnel": "0.0.3",
"proxy": "^2.1.1" "proxy": "^2.1.1"
},
"engines": {
"node": ">=24.0.0"
} }
}, },
"node_modules/@fastify/busboy": { "node_modules/@fastify/busboy": {
@@ -28,10 +31,14 @@
} }
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "20.7.1", "version": "24.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz",
"integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==",
"dev": true "dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~7.8.0"
}
}, },
"node_modules/@types/proxy": { "node_modules/@types/proxy": {
"version": "1.0.2", "version": "1.0.2",
@@ -226,6 +233,13 @@
"engines": { "engines": {
"node": ">=14.0" "node": ">=14.0"
} }
},
"node_modules/undici-types": {
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
"dev": true,
"license": "MIT"
} }
}, },
"dependencies": { "dependencies": {
@@ -235,10 +249,13 @@
"integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==" "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ=="
}, },
"@types/node": { "@types/node": {
"version": "20.7.1", "version": "24.1.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.7.1.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz",
"integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==", "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==",
"dev": true "dev": true,
"requires": {
"undici-types": "~7.8.0"
}
}, },
"@types/proxy": { "@types/proxy": {
"version": "1.0.2", "version": "1.0.2",
@@ -388,6 +405,12 @@
"requires": { "requires": {
"@fastify/busboy": "^2.0.0" "@fastify/busboy": "^2.0.0"
} }
},
"undici-types": {
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
"dev": true
} }
} }
} }