Dashboard › cli › Distillation
3fc98605-8bb0-4f1f-be5e-0c3f0d542ab4["lore_tm_v1_z8WR0gHuJU514tdG_ABpET4sUuelw0tXdwl56BdXWSw","lore_tm_v1_P2aWtfjUFhGTmhOgqgEjJaJCURGwlP6LQPZIhQctOA0"]
downloadNightlyBlob("token", "sha256:abc", controller.signal) cancellation coverage verifies rejection with the exact external abort reason, including cancellation during the redirect request; the redirect flow makes 2 requests and strips the authorization header from the second request to https://blob.storage.azure.com/file.listTags() coverage verifies: no prefix returns ["nightly", "patch-0.13.0", "patch-0.14.0"]; prefix "patch-" returns only ["patch-0.13.0", "patch-0.14.0"]; no prefix matches returns []; a response without a tags field returns []; HTTP 500 throws UpgradeError with "Failed to list GHCR tags: HTTP 500"; and TypeError("fetch failed") throws UpgradeError with "Failed to list GHCR tags: fetch failed".listTags() pagination coverage uses exactly 100 first-page tags (tag-000 through tag-099) plus tag-100 and tag-101 on page 2; it expects 102 total tags and exactly 2 requests.listTags("token", "patch-") prefix-filter coverage constructs 80 tagsβ40 patch-${i} and 40 nightly-${i}βand expects exactly 40 returned tags, all beginning with "patch-".downloadLayerBlob() coverage begins a 2-request redirect scenario for digest "sha256:abc123": the GHCR blob endpoint redirects with HTTP 307 to https://blob.storage.azure.com/file, whose response body is Uint8Array([1, 2, 3, 4, 5]).packages/cli/test/lib/release-notes.test.ts now imports afterEach, beforeEach, UPGRADE_SOURCES, fetchRecentReleases, fetchChangelog, and mockFetch; its new fetchChangelog source affinity suite saves and restores globalThis.fetch around each test and defines toolkitSource = UPGRADE_SOURCES[0]! and legacySource = UPGRADE_SOURCES[1]!.fetchChangelog({ channel: "stable", fromVersion: "0.20.0", toVersion: "0.21.0", source: toolkitSource }) against releases mcp@99.0.0, unprefixed 0.21.0, and cli@0.21.0; only the product-prefixed CLI release contributes 1 changelog item, and the sole request is https://api.github.com/repos/getsentry/toolkit/releases?per_page=30, with no getsentry/cli request.cli@0.21.0 through fetchRecentReleases(undefined, toolkitSource), then passes those releases to fetchChangelog() with a copied source object { ...toolkitSource }; the resulting changelog has 1 item containing "Reuse prefetched releases".fetchChangelog() source-validation coverage verifies normalized releases fetched for toolkitSource are rejected with null when supplied with source: UPGRADE_SOURCES[1].fetchChangelog() rejects raw prefetched Toolkit arrays cast as never, including mcp@0.21.0 and cli@0.21.0, returning null without issuing any network request.fetchChangelog() rejects an unprefixed raw prefetched Toolkit release tagged 0.21.0, returning null.cli@0.21.0-dev.1 and cli@0.21.0 releases and expects fetchChangelog() to return null, guarding against semantic prereleases/raw unnormalized prefetched input in the stable path.fetchChangelog() for 0.20.0 β 0.21.0 with legacySource; release 0.21.0 contributes 1 item and the sole request is https://api.github.com/repos/getsentry/cli/releases?per_page=30.fetchChangelog() for 0.21.0-dev.100 β 0.21.0-dev.200; commit message "fix: keep nightly stages affine" contributes 1 item, and the sole request is https://api.github.com/repos/getsentry/toolkit/commits?sha=main&since=1970-01-01T00:01:41.000Z&until=1970-01-01T00:03:21.000Z&per_page=100, with no getsentry/cli request.