import { afterEach, describe, expect, it, vi } from "vitest"; async function importSubCliDescriptors() { vi.resetModules(); return import("./subcli-descriptors.js"); } function descriptorNames(descriptors: ReadonlyArray<{ name: string }>): string[] { return descriptors.map((descriptor) => descriptor.name); } describe("sub-cli descriptors", () => { const originalPrivateQaCli = process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI; afterEach(() => { if (originalPrivateQaCli === undefined) { delete process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI; } else { process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI = originalPrivateQaCli; } vi.resetModules(); }); it("keeps the exported descriptor list aligned with private QA visibility when disabled (#83927)", async () => { delete process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI; const { SUB_CLI_DESCRIPTORS, getSubCliEntries } = await importSubCliDescriptors(); const exportedNames = descriptorNames(SUB_CLI_DESCRIPTORS); expect(exportedNames).toEqual(descriptorNames(getSubCliEntries())); expect(exportedNames).not.toContain("qa"); }); it("keeps all sub-cli filter surfaces aligned when private QA is disabled (#83926)", async () => { delete process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI; const { SUB_CLI_DESCRIPTORS, getSubCliCommandsWithSubcommands, getSubCliParentDefaultHelpCommands, } = await importSubCliDescriptors(); const exportedNames = descriptorNames(SUB_CLI_DESCRIPTORS); expect(exportedNames).not.toContain("qa"); expect(getSubCliCommandsWithSubcommands()).not.toContain("qa"); expect(getSubCliParentDefaultHelpCommands()).not.toContain("qa"); }); it("includes qa in the exported descriptor list when private QA is enabled", async () => { process.env.OPENCLAW_ENABLE_PRIVATE_QA_CLI = "1"; const { SUB_CLI_DESCRIPTORS, getSubCliCommandsWithSubcommands, getSubCliEntries, getSubCliParentDefaultHelpCommands, } = await importSubCliDescriptors(); const exportedNames = descriptorNames(SUB_CLI_DESCRIPTORS); expect(exportedNames).toEqual(descriptorNames(getSubCliEntries())); expect(exportedNames).toContain("qa"); expect(getSubCliCommandsWithSubcommands()).toContain("qa"); expect(getSubCliParentDefaultHelpCommands()).not.toContain("qa"); }); });