53 lines
2.2 KiB
TypeScript
53 lines
2.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { getEnvironmentCapabilities } from "@paperclipai/shared";
|
|
import { getSandboxProvider } from "../services/sandbox-provider-runtime.ts";
|
|
|
|
// The execution guard in environment-runtime.ts admits a reusable lease only
|
|
// when the provider declares supportsReusableLeases === true. This helper
|
|
// mirrors that guard, so the tests can compare the presentation default with
|
|
// the execution decision.
|
|
function executionSupportsReusableLeases(declared: boolean | undefined): boolean {
|
|
return declared === true;
|
|
}
|
|
|
|
describe("reusable leases default", () => {
|
|
it("test_fake_provider_reusable_leases_matches_runtime_declaration", () => {
|
|
const fakeRuntime = getSandboxProvider("fake");
|
|
expect(fakeRuntime).not.toBeNull();
|
|
expect(fakeRuntime?.supportsReusableLeases).toBe(false);
|
|
|
|
const capabilities = getEnvironmentCapabilities(["codex_local"]);
|
|
expect(capabilities.sandboxProviders.fake.supportsReusableLeases).toBe(
|
|
fakeRuntime?.supportsReusableLeases ?? false,
|
|
);
|
|
});
|
|
|
|
it("test_api_presentation_agrees_with_runtime_execution_for_reusable_leases", () => {
|
|
// Built-in fake provider: the runtime declares false, so execution and
|
|
// presentation both resolve to false.
|
|
const fakeRuntime = getSandboxProvider("fake");
|
|
const builtin = getEnvironmentCapabilities(["codex_local"]);
|
|
expect(builtin.sandboxProviders.fake.supportsReusableLeases).toBe(
|
|
executionSupportsReusableLeases(fakeRuntime?.supportsReusableLeases),
|
|
);
|
|
|
|
// Plug-in provider whose manifest does not declare reusable leases.
|
|
const absent = getEnvironmentCapabilities(["codex_local"], {
|
|
sandboxProviders: { "no-reuse-plugin": { displayName: "No Reuse" } },
|
|
});
|
|
expect(absent.sandboxProviders["no-reuse-plugin"].supportsReusableLeases).toBe(
|
|
executionSupportsReusableLeases(undefined),
|
|
);
|
|
|
|
// Plug-in provider whose manifest declares reusable leases.
|
|
const declared = getEnvironmentCapabilities(["codex_local"], {
|
|
sandboxProviders: {
|
|
"reuse-plugin": { displayName: "Reuse", supportsReusableLeases: true },
|
|
},
|
|
});
|
|
expect(declared.sandboxProviders["reuse-plugin"].supportsReusableLeases).toBe(
|
|
executionSupportsReusableLeases(true),
|
|
);
|
|
});
|
|
});
|