49 lines
1.8 KiB
JavaScript
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);
|
|
});
|
|
});
|