Skip to content

Commit a692f37

Browse files
committed
fix: parse error from coverage-result responses
1 parent bf5c1e2 commit a692f37

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

packages/shield-controller/src/backend.test.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,12 +144,11 @@ describe('ShieldRemoteBackend', () => {
144144
// Mock get coverage result: result unavailable.
145145
fetchMock.mockResolvedValue({
146146
status: 404,
147-
json: jest.fn().mockResolvedValue({ status: 'unavailable' }),
148147
} as unknown as Response);
149148

150149
const txMeta = generateMockTxMeta();
151150
await expect(backend.checkCoverage({ txMeta })).rejects.toThrow(
152-
'Timeout waiting for coverage result: unavailable',
151+
'Failed to get coverage result: 404',
153152
);
154153

155154
// Waiting here ensures coverage of the unexpected error and lets us know
@@ -171,12 +170,16 @@ describe('ShieldRemoteBackend', () => {
171170

172171
// Mock get coverage result: result unavailable.
173172
fetchMock.mockResolvedValue({
174-
status: 404,
173+
status: 412,
174+
json: jest.fn().mockResolvedValue({
175+
message: 'Results are not available yet',
176+
statusCode: 412,
177+
}),
175178
} as unknown as Response);
176179

177180
const txMeta = generateMockTxMeta();
178181
await expect(backend.checkCoverage({ txMeta })).rejects.toThrow(
179-
'Timeout waiting for coverage result',
182+
'Failed to get coverage result: Results are not available yet',
180183
);
181184

182185
// Waiting here ensures coverage of the unexpected error and lets us know

packages/shield-controller/src/backend.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,9 @@ export class ShieldRemoteBackend implements ShieldBackend {
235235
let errorMessage = 'Timeout waiting for coverage result';
236236
try {
237237
const errorJson = await res.json();
238-
errorMessage = `Timeout waiting for coverage result: ${errorJson.status}`;
238+
errorMessage = `Failed to get coverage result: ${errorJson.message || errorJson.status}`;
239239
} catch {
240-
errorMessage = 'Timeout waiting for coverage result';
240+
errorMessage = `Failed to get coverage result: ${res.status}`;
241241
}
242242
throw new HttpError(res.status, errorMessage);
243243
};
@@ -339,9 +339,10 @@ function computePollingIntervalAndRetryCount(
339339
const backoff = new ConstantBackoff(pollInterval);
340340
const computedMaxRetries = Math.floor(timeout / pollInterval) + 1;
341341

342-
const maxRetries = isNaN(computedMaxRetries)
343-
? DEFAULT_MAX_RETRIES
344-
: computedMaxRetries;
342+
const maxRetries =
343+
isNaN(computedMaxRetries) || !isFinite(computedMaxRetries)
344+
? DEFAULT_MAX_RETRIES
345+
: computedMaxRetries;
345346

346347
return {
347348
backoff,

0 commit comments

Comments
 (0)