Files
t8y2--dbx/packages/app-tests/agentVersionBump.test.ts
2026-07-13 13:09:14 +08:00

131 lines
3.6 KiB
TypeScript
Vendored

import { strict as assert } from "node:assert";
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
import { test } from "vitest";
const { evaluateAgentVersionBump } = await importScript(".github/scripts/bump-agent-versions.mjs");
function importScript(path: string): Promise<Record<string, any>> {
const source = readFileSync(resolve(path), "utf8").replace(/^#!.*\r?\n/, "");
return import(`data:text/javascript;base64,${Buffer.from(source).toString("base64")}`);
}
function moduleFixture(paths: string[], files: Record<string, string> = {}) {
const existing = new Set(paths);
return {
moduleExists: (path: string) => existing.has(path),
readModuleFile: (path: string) => files[path] ?? "",
};
}
test("common agent runtime changes bump only modules that package common", () => {
const fixture = moduleFixture(
[
"agents/drivers/access",
"agents/drivers/access/build.gradle",
"agents/drivers/kafka",
"agents/drivers/kafka/build.gradle",
"agents/drivers/mongodb",
"agents/drivers/mongodb/build.gradle",
"agents/drivers/oracle-go",
"agents/drivers/xugu",
],
{
"agents/drivers/mongodb/build.gradle": "dependencies { implementation project(':common') }",
},
);
const result = evaluateAgentVersionBump({
versions: {
access: "0.1.0",
kafka: "0.1.0",
mongodb: "0.1.0",
oracle: "0.1.0",
xugu: "0.1.0",
},
changedFiles: ["agents/common/src/main/resources/agent-protocol-v1.json"],
legacyStandaloneModules: new Set(["kafka", "mongodb"]),
...fixture,
});
assert.equal(result.changed, true);
assert.deepEqual(result.versions, {
access: "0.1.1",
kafka: "0.1.0",
mongodb: "0.1.1",
oracle: "0.1.0",
xugu: "0.1.0",
});
});
test("common agent test changes do not bump driver versions", () => {
const fixture = moduleFixture(["agents/drivers/access", "agents/drivers/access/build.gradle"]);
const result = evaluateAgentVersionBump({
versions: {
access: "0.1.0",
},
changedFiles: ["agents/common/src/test/java/com/dbx/agent/AbstractJdbcAgentTest.java"],
...fixture,
});
assert.equal(result.changed, false);
assert.deepEqual(result.versions, {
access: "0.1.0",
});
});
test("native agent source changes still bump native module versions", () => {
const fixture = moduleFixture([
"agents/drivers/access",
"agents/drivers/access/build.gradle",
"agents/drivers/oracle-go",
"agents/drivers/xugu",
]);
const result = evaluateAgentVersionBump({
versions: {
access: "0.1.0",
oracle: "0.1.0",
xugu: "0.1.0",
},
changedFiles: ["agents/drivers/oracle-go/main.go", "agents/drivers/xugu/main.go"],
...fixture,
});
assert.equal(result.changed, true);
assert.deepEqual(result.versions, {
access: "0.1.0",
oracle: "0.1.1",
xugu: "0.1.1",
});
});
test("manual agent versions are preserved while other changed modules auto bump", () => {
const fixture = moduleFixture([
"agents/drivers/access",
"agents/drivers/access/build.gradle",
"agents/drivers/dameng",
"agents/drivers/dameng/build.gradle",
]);
const result = evaluateAgentVersionBump({
versions: {
access: "0.1.2",
dameng: "0.1.0",
},
prevVersions: {
access: "0.1.1",
dameng: "0.1.0",
},
changedFiles: ["agents/common/src/main/java/com/dbx/agent/JdbcExecutor.java", "agents/versions.json"],
...fixture,
});
assert.equal(result.changed, true);
assert.deepEqual(result.versions, {
access: "0.1.2",
dameng: "0.1.1",
});
});