Dashboard › cli › Distillation
28c27b8f-ccf8-46cb-ab61-7e0947c6dee2["lore_tm_v1_Cm9QBSgdIaRCk9H-gcxXEUjZiBZWs7hkWx-Qfjybo_A","lore_tm_v1_q5wu0UZiXS_bjCDvEwgpkvJS6If5EatI535min_KdWU","lore_tm_v1_GqL6kjoGly71CHbE3YMGT1LeMdniiKLNBkPaq9Rb1NI","lore_tm_v1_0cV4mi41nUEXrn5CUW33xmTrjD9RXJPHq5RzZHKCO2M"]
packages/cli/test/lib/delta-upgrade.mocked.test.ts migrated stable delta fixtures from legacy getsentry/cli release tags to Toolkit product-prefixed tags: 0.14.0 → cli@0.14.0 and 0.13.0 → cli@0.13.0.packages/cli/test/lib/delta-upgrade.mocked.test.ts changed from https://github.com/getsentry/cli/releases/download/0.14.0/${BINARY_NAME}.patch to https://github.com/getsentry/toolkit/releases/download/cli@0.14.0/${BINARY_NAME}.patch.0.13.0 → 0.14.0 chain before an intentionally invalid empty TRDIFF10 patch fails; returning null on HTTP 500 chain-resolution failure; returning null for garbage patch bytes [0, 1, 2, 3]; and successfully applying small.trdiff10 with SHA-256 54d0dcd74478bc154b5b24393fdc6129518271baa36f446384d60e84021bb724, patchBytes: 89, and chainLength: 1.packages/cli/test/lib/delta-upgrade.test.ts now imports vi, UPGRADE_SOURCES, and useTestConfigDir; it defines LEGACY_UPGRADE_SOURCE = UPGRADE_SOURCES[1] and throws "Legacy upgrade source is not configured" if that source is absent.fetchRecentReleases() tests now use Toolkit release tags cli@0.14.0 and cli@0.13.0, include an unrelated mcp@9.0.0 release, and verify product-specific filtering/normalization rather than treating every Toolkit release as a CLI release.fetchRecentReleases() has parameterized stable prerelease filtering for both sources: Toolkit rejects cli@0.14.0-dev.1 while retaining/normalizing cli@0.14.0 to 0.14.0; legacy rejects 0.14.0-dev.1 while retaining 0.14.0, even when the GitHub prerelease field is false.fetchRecentReleases(undefined, LEGACY_UPGRADE_SOURCE) requests exactly https://api.github.com/repos/getsentry/cli/releases?per_page=12.packages/cli/test/lib/delta-upgrade.test.ts now represent Toolkit releases with tags such as cli@0.13.0, cli@0.14.0, and cli@0.15.0, including successful multi-version resolution and failed patch-download scenarios.packages/cli/test/lib/ghcr.test.ts expanded from 242 to 350 lines, imports UPGRADE_SOURCES and GhcrManifestHttpError, and replaces abbreviated fake OCI digests with valid 64-hex digests such as sha256:${"0".repeat(64)}, sha256:${"a".repeat(64)}, and sha256:${"d".repeat(64)}.getAnonymousToken(UPGRADE_SOURCES[0]) is tested to request a token scope containing scope=repository:getsentry/toolkit:pull and return "toolkit-token", confirming GHCR authentication uses the selected upgrade source’s repository.getNightlyVersion() now has tests rejecting invalid version annotations "not-semver", "1.2.3", and "1.2.3-dev.foo" with "Nightly manifest has invalid version annotation"; absence of the annotations object remains an UpgradeError.fetchManifest() gained malformed OCI metadata coverage, including rejection when a layer’s annotations is an array (["value"]), with the message Manifest for tag "nightly" returned invalid metadata.response.json()—simulated by throwing TypeError("terminated")—is classified as { name: "UpgradeTransportError", reason: "network_error" }.404 from fetchManifest("token", "patch-0.13.0") is now asserted as a GhcrManifestHttpError with name: "GhcrManifestHttpError", status: 404, and message Failed to fetch manifest for tag "patch-0.13.0": HTTP 404; network failures remain UpgradeErrors with messages such as Failed to fetch manifest for tag "some-tag": fetch failed.listTags() now has loop-protection coverage: when each response returns the same 100 tags (tag-0 through tag-99) and therefore repeats the pagination cursor, it throws "GHCR tag pagination returned a repeated cursor" after exactly 2 requests.