1import { VERSION } from "@nzip/shared";2import { main } from "./main.ts";3import { parseCliArgs } from "./lib/args.ts";45async function captureStdout(argv: string[]): Promise<string[]> {6 const lines: string[] = [];7 const original = console.log;8 console.log = (...args: unknown[]) => lines.push(args.map(String).join(" "));9 try {10 await main(argv);11 } finally {12 console.log = original;13 }14 return lines;15}1617Deno.test("version prints the installed CLI version without configuration", async () => {18 const lines = await captureStdout(["--version"]);19 if (lines.length !== 1 || lines[0] !== `nzip ${VERSION}`) {20 throw new Error(`unexpected version output: ${JSON.stringify(lines)}`);21 }22});2324Deno.test("version supports agent-readable JSON", async () => {25 const lines = await captureStdout(["--version", "--json"]);26 if (lines.length !== 1) throw new Error(`unexpected version output: ${JSON.stringify(lines)}`);2728 const output = JSON.parse(lines[0]);29 if (output.version !== VERSION) {30 throw new Error(`unexpected version JSON: ${lines[0]}`);31 }32});3334Deno.test("hex addresses that look numeric stay strings", () => {35 const positionals = parseCliArgs(["site", "push", "./page", "3e21", "0123"])._;36 if (JSON.stringify(positionals) !== JSON.stringify(["site", "push", "./page", "3e21", "0123"])) {37 throw new Error(`positionals were coerced: ${JSON.stringify(positionals)}`);38 }39});