(traceContext, options = {})
| 509 | } |
| 510 | |
| 511 | async function completeRun(traceContext, options = {}) { |
| 512 | if (!traceContext) { |
| 513 | return null; |
| 514 | } |
| 515 | |
| 516 | const status = options.status || "success"; |
| 517 | let eventStatus = status; |
| 518 | if (status === "failed") { |
| 519 | eventStatus = "failed"; |
| 520 | } else if (status === "success") { |
| 521 | eventStatus = "success"; |
| 522 | } |
| 523 | const finishedAt = options.finishedAt || new Date(); |
| 524 | const startedAt = traceContext.startedAt || finishedAt; |
| 525 | const summary = sanitizePayload(options.summary || null); |
| 526 | |
| 527 | const runFinishedEvent = await startEvent(traceContext, "run_finished", { |
| 528 | status, |
| 529 | summary, |
| 530 | ...sanitizePayload(options.payload), |
| 531 | }); |
| 532 | await finishEvent(traceContext, runFinishedEvent, eventStatus, { |
| 533 | status, |
| 534 | summary, |
| 535 | ...sanitizePayload(options.payload), |
| 536 | }); |
| 537 | |
| 538 | await updateRunContext(traceContext, { |
| 539 | status, |
| 540 | finishedAt, |
| 541 | durationMs: getDurationMs(startedAt, finishedAt), |
| 542 | summary, |
| 543 | }); |
| 544 | |
| 545 | return traceContext; |
| 546 | } |
| 547 | |
| 548 | async function failRun(traceContext, error, options = {}) { |
| 549 | if (!traceContext) { |
no test coverage detected