mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 18:20:44 +00:00
ci: time-box package acceptance legacy compat
This commit is contained in:
@@ -10,15 +10,13 @@ function withTarball(
|
||||
inventory: string[],
|
||||
files: Record<string, string>,
|
||||
testBody: (tarball: string) => void,
|
||||
version = "0.0.0",
|
||||
) {
|
||||
const root = mkdtempSync(join(tmpdir(), "openclaw-package-tarball-test-"));
|
||||
try {
|
||||
const packageRoot = join(root, "package");
|
||||
mkdirSync(join(packageRoot, "dist"), { recursive: true });
|
||||
writeFileSync(
|
||||
join(packageRoot, "package.json"),
|
||||
JSON.stringify({ name: "openclaw", version: "0.0.0" }),
|
||||
);
|
||||
writeFileSync(join(packageRoot, "package.json"), JSON.stringify({ name: "openclaw", version }));
|
||||
writeFileSync(
|
||||
join(packageRoot, "dist", "postinstall-inventory.json"),
|
||||
JSON.stringify(inventory),
|
||||
@@ -41,7 +39,7 @@ function withTarball(
|
||||
}
|
||||
|
||||
describe("check-openclaw-package-tarball", () => {
|
||||
it("allows legacy private QA inventory entries omitted from shipped tarballs", () => {
|
||||
it("allows legacy private QA inventory entries omitted from shipped tarballs through 2026.4.25", () => {
|
||||
withTarball(
|
||||
["dist/index.js", "dist/extensions/qa-channel/runtime-api.js"],
|
||||
{ "dist/index.js": "export {};\n" },
|
||||
@@ -52,6 +50,24 @@ describe("check-openclaw-package-tarball", () => {
|
||||
expect(result.stderr).toContain("legacy inventory references omitted private QA");
|
||||
expect(result.stdout).toContain("OpenClaw package tarball integrity passed.");
|
||||
},
|
||||
"2026.4.25-beta.10",
|
||||
);
|
||||
});
|
||||
|
||||
it("rejects legacy private QA inventory omissions for newer packages", () => {
|
||||
withTarball(
|
||||
["dist/index.js", "dist/extensions/qa-channel/runtime-api.js"],
|
||||
{ "dist/index.js": "export {};\n" },
|
||||
(tarball) => {
|
||||
const result = spawnSync("node", [CHECK_SCRIPT, tarball], { encoding: "utf8" });
|
||||
|
||||
expect(result.status).not.toBe(0);
|
||||
expect(result.stderr).toContain(
|
||||
"inventory references missing tar entry dist/extensions/qa-channel/runtime-api.js",
|
||||
);
|
||||
expect(result.stderr).not.toContain("legacy inventory references omitted private QA");
|
||||
},
|
||||
"2026.4.26",
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@ const INSTALL_E2E_RUNNER_PATH = "scripts/docker/install-sh-e2e/run.sh";
|
||||
const OPENAI_WEB_SEARCH_MINIMAL_E2E_PATH = "scripts/e2e/openai-web-search-minimal-docker.sh";
|
||||
const PLUGINS_DOCKER_E2E_PATH = "scripts/e2e/plugins-docker.sh";
|
||||
const PLUGIN_UPDATE_DOCKER_E2E_PATH = "scripts/e2e/plugin-update-unchanged-docker.sh";
|
||||
const DOCTOR_SWITCH_DOCKER_E2E_PATH = "scripts/e2e/doctor-install-switch-docker.sh";
|
||||
const UPDATE_CHANNEL_SWITCH_DOCKER_E2E_PATH = "scripts/e2e/update-channel-switch-docker.sh";
|
||||
const CENTRALIZED_BUILD_SCRIPTS = [
|
||||
"scripts/docker/setup.sh",
|
||||
"scripts/e2e/browser-cdp-snapshot-docker.sh",
|
||||
@@ -75,10 +77,31 @@ describe("docker build helper", () => {
|
||||
|
||||
expect(runner).toContain("plugin install record changed unexpectedly");
|
||||
expect(runner).toContain("index.installRecords ?? index.records ?? config.plugins?.installs");
|
||||
expect(runner).not.toContain("Config changed unexpectedly");
|
||||
expect(runner).toContain("Config changed unexpectedly for modern package");
|
||||
expect(runner).not.toContain("before_hash");
|
||||
});
|
||||
|
||||
it("caps package acceptance legacy compatibility at 2026.4.25", () => {
|
||||
const scripts = [
|
||||
readFileSync(DOCTOR_SWITCH_DOCKER_E2E_PATH, "utf8"),
|
||||
readFileSync(UPDATE_CHANNEL_SWITCH_DOCKER_E2E_PATH, "utf8"),
|
||||
readFileSync(PLUGINS_DOCKER_E2E_PATH, "utf8"),
|
||||
readFileSync(PLUGIN_UPDATE_DOCKER_E2E_PATH, "utf8"),
|
||||
];
|
||||
|
||||
for (const script of scripts) {
|
||||
expect(script).toContain("2026, 4, 25");
|
||||
}
|
||||
expect(scripts.join("\n")).toContain("OPENCLAW_PACKAGE_ACCEPTANCE_LEGACY_COMPAT");
|
||||
expect(scripts.join("\n")).toContain(
|
||||
"Package $package_version must support gateway install --wrapper.",
|
||||
);
|
||||
expect(scripts.join("\n")).toContain("expected persisted update.channel dev");
|
||||
expect(scripts.join("\n")).toContain(
|
||||
"expected modern installRecords in installed plugin index",
|
||||
);
|
||||
});
|
||||
|
||||
it("passes installer tag env to bash, not curl", () => {
|
||||
const runner = readFileSync(INSTALL_E2E_RUNNER_PATH, "utf8");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user