145 lines · 4.3 KB · TypeScript
RawDownload
import assert from "node:assert/strict";import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";import { tmpdir } from "node:os";import { join } from "node:path";import test from "node:test";import { DEFAULT_SIDECAR_PLATFORMS } from "./packages.js";import { bumpCargoVersions, bumpPackageJsons } from "./version.js"; async function writeJson(root: string, rel: string, value: unknown) {	const path = join(root, rel);	await mkdir(join(path, ".."), { recursive: true });	await writeFile(path, `${JSON.stringify(value, null, "\t")}\n`);} test("bumpCargoVersions bumps [workspace.package] and AgentOS path deps", async () => {	const repoRoot = await mkdtemp(join(tmpdir(), "agentos-version-test-"));	try {		await writeFile(			join(repoRoot, "Cargo.toml"),			`[workspace.package]version = "0.2.0" [workspace.dependencies]agentos-protocol = { path = "crates/agentos-protocol", version = "0.2.0-rc.3" }agentos-kernel = { path = "crates/kernel", version = "0.2.0-rc.3" }serde = "1"`,		);		await mkdir(join(repoRoot, "crates", "excluded-core"), { recursive: true });		await writeFile(			join(repoRoot, "crates", "excluded-core", "Cargo.toml"),			`[package]name = "agentos-excluded-core"version = "0.2.0" [dependencies]agentos-protocol = { path = "../agentos-protocol", version = "0.2.0" }`,		); 		await bumpCargoVersions(repoRoot, "0.3.0"); 		const cargoToml = await readFile(join(repoRoot, "Cargo.toml"), "utf8");		// a6 workspace version bumped...		assert.match(cargoToml, /\[workspace\.package\]\nversion = "0\.3\.0"/);		// ...AgentOS-owned crate deps (path = "crates/...") bumped...		assert.match(			cargoToml,			/agentos-protocol = \{ path = "crates\/agentos-protocol", version = "0\.3\.0" \}/,		);		assert.match(			cargoToml,			/agentos-kernel = \{ path = "crates\/kernel", version = "0\.3\.0" \}/,		);		assert.match(cargoToml, /serde = "1"/);		const excludedCargoToml = await readFile(			join(repoRoot, "crates", "excluded-core", "Cargo.toml"),			"utf8",		);		assert.match(excludedCargoToml, /version = "0\.3\.0"/);		assert.match(			excludedCargoToml,			/agentos-protocol = \{ path = "\.\.\/agentos-protocol", version = "0\.3\.0" \}/,		);	} finally {		await rm(repoRoot, { recursive: true, force: true });	}}); test("bumpPackageJsons injects sidecar platform optional dependencies", async () => {	const repoRoot = await mkdtemp(join(tmpdir(), "agentos-version-test-"));	try {		await writeJson(repoRoot, "package.json", {			name: "agentos-workspace",			private: true,			packageManager: "pnpm@10.13.1",		});		await writeFile(			join(repoRoot, "pnpm-workspace.yaml"),			[				"packages:",				"  - packages/*",				"  - packages/sidecar-binary/npm/*",				"  - packages/runtime-sidecar/npm/*",				"",			].join("\n"),		);		for (const [rel, name] of [			["packages/agentos", "@rivet-dev/agentos"],			["packages/core", "@rivet-dev/agentos-core"],			["packages/sidecar-binary", "@rivet-dev/agentos-sidecar"],			["packages/runtime-sidecar", "@rivet-dev/agentos-runtime-sidecar"],			...DEFAULT_SIDECAR_PLATFORMS.map((platform) => [				`packages/sidecar-binary/npm/${platform}`,				`@rivet-dev/agentos-sidecar-${platform}`,			]),			...DEFAULT_SIDECAR_PLATFORMS.map((platform) => [				`packages/runtime-sidecar/npm/${platform}`,				`@rivet-dev/agentos-runtime-sidecar-${platform}`,			]),		]) {			await writeJson(repoRoot, join(rel, "package.json"), {				name,				version: "0.0.0",			});		} 		await bumpPackageJsons(repoRoot, "0.3.0"); 		const sidecarManifest = JSON.parse(			await readFile(				join(repoRoot, "packages/sidecar-binary/package.json"),				"utf8",			),		);		assert.deepEqual(			sidecarManifest.optionalDependencies,			Object.fromEntries(				DEFAULT_SIDECAR_PLATFORMS.map((platform) => [					`@rivet-dev/agentos-sidecar-${platform}`,					"0.3.0",				]).sort(),			),		); 		const runtimeSidecarManifest = JSON.parse(			await readFile(				join(repoRoot, "packages/runtime-sidecar/package.json"),				"utf8",			),		);		assert.deepEqual(			runtimeSidecarManifest.optionalDependencies,			Object.fromEntries(				DEFAULT_SIDECAR_PLATFORMS.map((platform) => [					`@rivet-dev/agentos-runtime-sidecar-${platform}`,					"0.3.0",				]).sort(),			),		); 	} finally {		await rm(repoRoot, { recursive: true, force: true });	}});