feat(FN-4636): complete Step 3 — add sandbox backend resolver

Fusion-Task-Id: FN-4636
Fusion-Task-Lineage: 38ff2f48-4cb1-42c2-8f64-eb3b8d3d7f2c
This commit is contained in:
Fusion
2026-05-15 10:04:14 -07:00
committed by gsxdsm
parent b1de46e1c1
commit fcaa0d3b8f
2 changed files with 47 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
import { describe, expect, it } from "vitest";
import { NativeSandboxBackend } from "../native.js";
import { resolveSandboxBackend } from "../index.js";
describe("resolveSandboxBackend", () => {
it("returns native for undefined backend", () => {
expect(resolveSandboxBackend()).toBeInstanceOf(NativeSandboxBackend);
});
it("returns native for explicit native backend", () => {
expect(resolveSandboxBackend({ backendId: "native" })).toBeInstanceOf(NativeSandboxBackend);
});
it("returns native for unknown backend id", () => {
expect(resolveSandboxBackend({ backendId: "bubblewrap" })).toBeInstanceOf(NativeSandboxBackend);
});
});

View File

@@ -0,0 +1,29 @@
import { NativeSandboxBackend } from "./native.js";
import type { SandboxBackend, SandboxCapabilities } from "./types.js";
export type {
SandboxBackend,
SandboxCapabilities,
SandboxPolicy,
SandboxRunOptions,
SandboxRunResult,
} from "./types.js";
let sandboxBackendOverrideForTests: SandboxBackend | null = null;
export function __setSandboxBackendForTests(backend: SandboxBackend | null): void {
sandboxBackendOverrideForTests = backend;
}
export function __resetSandboxBackendForTests(): void {
sandboxBackendOverrideForTests = null;
}
export function resolveSandboxBackend(_options?: { backendId?: SandboxCapabilities["id"] }): SandboxBackend {
if (sandboxBackendOverrideForTests) {
return sandboxBackendOverrideForTests;
}
// TODO(FN-4637/FN-4638/FN-4642): branch by backend id once additional implementations land.
return new NativeSandboxBackend();
}