Files
2026-07-13 13:39:12 +08:00

49 lines
1.8 KiB
JavaScript

import { describe, it } from "node:test";
import assert from "node:assert/strict";
import { parseArgs } from "../../../scripts/features/lib/args.mjs";
describe("parseArgs", () => {
it("requires --owner and --repo", () => {
assert.throws(() => parseArgs([]), /--owner is required/);
assert.throws(() => parseArgs(["--owner", "x"]), /--repo is required/);
});
it("applies defaults when args/env missing", () => {
const args = parseArgs(["--owner", "diegosouzapw", "--repo", "OmniRoute"], {});
assert.equal(args.quarantineDays, 14);
assert.equal(args.overrideThumbs, 5);
assert.equal(args.overrideCommenters, 3);
assert.equal(args.staleNeedsDays, 30);
assert.equal(args.staleDeferDays, 90);
assert.equal(args.ideiaDir, "_ideia");
assert.equal(args.changelog, "CHANGELOG.md");
assert.equal(args.output, null);
assert.equal(args.dryRun, false);
assert.equal(args.verbose, false);
assert.deepEqual(args.onlyIssues, []);
});
it("CLI arg takes precedence over env var", () => {
const args = parseArgs(["--owner", "x", "--repo", "y", "--quarantine-days", "7"], {
FEATURE_QUARANTINE_DAYS: "21",
});
assert.equal(args.quarantineDays, 7);
});
it("env var used when CLI arg missing", () => {
const args = parseArgs(["--owner", "x", "--repo", "y"], { FEATURE_QUARANTINE_DAYS: "21" });
assert.equal(args.quarantineDays, 21);
});
it("parses --only-issues as comma-separated numbers", () => {
const args = parseArgs(["--owner", "x", "--repo", "y", "--only-issues", "1046,1041,980"], {});
assert.deepEqual(args.onlyIssues, [1046, 1041, 980]);
});
it("parses --dry-run and --verbose as booleans", () => {
const args = parseArgs(["--owner", "x", "--repo", "y", "--dry-run", "--verbose"], {});
assert.equal(args.dryRun, true);
assert.equal(args.verbose, true);
});
});