UNPKG

@fedify/fedify

Version:

An ActivityPub server framework

141 lines (137 loc) 3.68 kB
import { Temporal } from "@js-temporal/polyfill"; import { URLPattern } from "urlpattern-polyfill"; globalThis.addEventListener = () => {}; import { assertEquals } from "../assert_equals-CTYbeopb.js"; import "../assert-DmFG7ppO.js"; import "../assert_instance_of-CF09JHYM.js"; import { formatSemVer, parseSemVer } from "../semver-DWClQt_5.js"; import { test } from "../testing-BZ0dJ4qn.js"; import "../std__assert-vp0TKMS1.js"; import "../assert_rejects-C-sxEMM5.js"; import "../assert_is_error-nrwA1GeT.js"; import "../assert_not_equals-Dc7y-V5Q.js"; import { assertThrows } from "../assert_throws-Cn9C6Jur.js"; //#region nodeinfo/semver.test.ts test("parseSemVer() handles major", async (t) => { const versions = [ ["1.2.3", 1], [" 1.2.3 ", 1], [" 2.2.3-4 ", 2], [" 3.2.3-pre ", 3], ["v5.2.3", 5], [" v8.2.3 ", 8], [" 13.2.3", 13] ]; for (const [v, expected] of versions) await t.step(v, () => { const version = parseSemVer(v); assertEquals(version.major, expected); }); }); test("parseSemVer() handles minor", async (t) => { const versions = [ ["1.1.3", 1], [" 1.1.3 ", 1], [" 1.2.3-4 ", 2], [" 1.3.3-pre ", 3], ["v1.5.3", 5], [" v1.8.3 ", 8], [" 1.13.3", 13] ]; for (const [v, expected] of versions) await t.step(v, () => { const version = parseSemVer(v); assertEquals(version.minor, expected); }); }); test("parseSemVer() handles patch", async (t) => { const versions = [ ["1.2.1", 1], [" 1.2.1 ", 1], [" 1.2.2-4 ", 2], [" 1.2.3-pre ", 3], ["v1.2.5", 5], [" v1.2.8 ", 8], [" 1.2.13", 13] ]; for (const [v, expected] of versions) await t.step(v, () => { const semver = parseSemVer(v); const actual = semver.patch; assertEquals(actual, expected); }); }); test("parseSemVer() handles prerelease", async (t) => { const versions = [ ["1.2.2-alpha.1", ["alpha", 1]], ["0.6.1-1", [1]], ["1.0.0-beta.2", ["beta", 2]], ["v0.5.4-pre", ["pre"]], ["1.2.2-alpha.1", ["alpha", 1]], ["1.2.0-1b3-4", ["1b3-4"]], ["1.2.0-3.6-pre2", [3, "6-pre2"]], ["2.0.0", []] ]; for (const [v, expected] of versions) await t.step(`${v} : ${JSON.stringify(expected)}`, () => { const semver = parseSemVer(v); assertEquals(semver.prerelease, expected); }); }); test({ name: "parseSemVer() throws on bad versions", fn: async (t) => { const versions = [ ["1.2." + new Array(256).join("1")], ["1.2." + new Array(100).join("1")], [null], [void 0], [{}], [[]], [false], [true], [0], [""], ["not a version"], ["∞.∞.∞"], ["NaN.NaN.NaN"] ]; for (const [v] of versions) await t.step(`${JSON.stringify(v)}`, () => { assertThrows(() => parseSemVer(v)); }); } }); test("parseSemVer() throws on invalid versions", async (t) => { const versions = [ "1.2.3.4", "NOT VALID", 1.2, null, "Infinity.NaN.Infinity" ]; for (const v of versions) await t.step(`invalid ${v}`, () => { assertThrows(function() { parseSemVer(v); }, TypeError); }); }); test("parseSemVer() handles big numeric prerelease", function() { const r = parseSemVer(`1.2.3-beta.${Number.MAX_SAFE_INTEGER}0`); assertEquals(r.prerelease, ["beta", "90071992547409910"]); }); test("formatSemVer()", async (t) => { const versions = [ ["0.0.0", "0.0.0"], ["1.2.3", "1.2.3"], ["1.2.3-pre", "1.2.3-pre"], ["1.2.3-pre.0", "1.2.3-pre.0"], ["1.2.3+b", "1.2.3+b"], ["1.2.3+b.0", "1.2.3+b.0"], ["1.2.3-pre.0+b.0", "1.2.3-pre.0+b.0"] ]; for (const [version, expected] of versions) await t.step({ name: version, fn: () => { const v = parseSemVer(version); const actual = formatSemVer(v); assertEquals(actual, expected); } }); }); //#endregion