mesh/delivery delivered
mesh/check pass 68dfca105794 on 3bec357968da | unit 4443 run, 0 kept, 15 skipped | integration 4483 run, 0 kept, 23 skipped | over bound: unit, integr…
The operator, 2026-10-23: "disable the gitea branch protection reset thing". setUpToolsAccount (run at every token mint) called ensureMainMerges regardless; it now does so only when the setting is true.
65 lines
2.9 KiB
TypeScript
65 lines
2.9 KiB
TypeScript
// The operator, 2026-10-23: "disable the gitea branch protection reset thing". keep-main-rules false (the default)
|
|
// writes nothing at the forge, true puts main's rule right as before.
|
|
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { mkdtempSync, writeFileSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
|
|
import { keepMainRules, mainRulesStep, LEFT_AS_SET } from "../dist/mainrules.js";
|
|
|
|
function env(body?: string): NodeJS.ProcessEnv {
|
|
if (body === undefined) return {};
|
|
const f = join(mkdtempSync(join(tmpdir(), "gitea-keep-")), "config.json");
|
|
writeFileSync(f, body);
|
|
return { MESH_GITEA_CONFIG_FILE: f };
|
|
}
|
|
|
|
test("the setting is false unless the config says true", () => {
|
|
assert.equal(keepMainRules(env()), false);
|
|
assert.equal(keepMainRules(env("{}")), false);
|
|
assert.equal(keepMainRules(env('{"keep-main-rules":false}')), false);
|
|
assert.equal(keepMainRules(env("not json")), false);
|
|
assert.equal(keepMainRules(env('{"keep-main-rules":true}')), true);
|
|
});
|
|
|
|
test("false: the step never writes and says once that the rules are left", async () => {
|
|
let writes = 0;
|
|
const said: string[] = [];
|
|
const step = mainRulesStep(false, async () => { writes++; return ["a"]; }, (l) => said.push(l));
|
|
await step(); await step(); await step();
|
|
assert.equal(writes, 0);
|
|
assert.deepEqual(said, [LEFT_AS_SET]);
|
|
assert.match(LEFT_AS_SET, /main's rules are left as set at the forge \(keep-main-rules is false\)/);
|
|
});
|
|
|
|
test("true: every step puts the rules right", async () => {
|
|
let writes = 0;
|
|
const said: string[] = [];
|
|
const step = mainRulesStep(true, async () => { writes++; return ["a", "b"]; }, (l) => said.push(l));
|
|
await step(); await step();
|
|
assert.equal(writes, 2);
|
|
assert.deepEqual(said, ["[gitea] main's rule is right in 2 repositories"]);
|
|
});
|
|
|
|
test("a token mint's account setup writes no protection while keep-main-rules is false, and does when true", async () => {
|
|
const { setUpToolsAccount } = await import("../dist/tools-account.js");
|
|
for (const [keep, want] of [[false, 0], [true, 1]] as const) {
|
|
let merges = 0;
|
|
const forge = {
|
|
ensureUser: async () => {}, ensureTeamWith: async () => 1, addUserToTeam: async () => {},
|
|
ensureMainMerges: async () => { merges++; return []; },
|
|
};
|
|
await setUpToolsAccount(forge, "mesh-tools", () => "pw", keep);
|
|
assert.equal(merges, want);
|
|
}
|
|
// The default comes from the setting, which is false when the config does not say true.
|
|
let merges = 0;
|
|
const saved = process.env.MESH_GITEA_CONFIG_FILE;
|
|
delete process.env.MESH_GITEA_CONFIG_FILE;
|
|
try {
|
|
await setUpToolsAccount({ ensureUser: async () => {}, ensureTeamWith: async () => 1, addUserToTeam: async () => {}, ensureMainMerges: async () => { merges++; return []; } }, "mesh-tools", () => "pw");
|
|
} finally { if (saved !== undefined) process.env.MESH_GITEA_CONFIG_FILE = saved; }
|
|
assert.equal(merges, 0);
|
|
});
|