39 lines · 1.2 KB · TypeScript
RawDownload
import { assert, it } from "@effect/vitest";import * as Effect from "effect/Effect"; import { resolvePreviousReleaseTag } from "./resolve-previous-release-tag.ts"; it.effect("selects the latest earlier stable tag and ignores nightlies", () =>  Effect.gen(function* () {    const previous = yield* resolvePreviousReleaseTag("stable", "v1.2.0", [      "v1.1.0",      "v1.1.1-nightly.20260619.1",      "v1.1.2",      "v1.2.0",    ]);     assert.equal(previous, "v1.1.2");  }),); it.effect("accepts legacy nightly tags when selecting the previous nightly", () =>  Effect.gen(function* () {    const previous = yield* resolvePreviousReleaseTag("nightly", "v1.2.0-nightly.20260620.2", [      "nightly-v1.2.0-nightly.20260620.1",      "v1.1.0-nightly.20260619.9",    ]);     assert.equal(previous, "nightly-v1.2.0-nightly.20260620.1");  }),); it.effect("reports the invalid tag with its release channel", () =>  Effect.gen(function* () {    const error = yield* resolvePreviousReleaseTag("nightly", "v1.2.0", []).pipe(Effect.flip);     assert.equal(error._tag, "InvalidReleaseTagError");    assert.equal(error.channel, "nightly");    assert.equal(error.currentTag, "v1.2.0");    assert.equal(error.message, "Invalid nightly release tag 'v1.2.0'.");  }),);