20 lines
770 B
TypeScript
20 lines
770 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { splitShellArgs } from "./shell-argv.js";
|
|
|
|
describe("splitShellArgs", () => {
|
|
it("splits whitespace and respects quotes", () => {
|
|
expect(splitShellArgs(`qmd --foo "bar baz"`)).toEqual(["qmd", "--foo", "bar baz"]);
|
|
expect(splitShellArgs(`qmd --foo 'bar baz'`)).toEqual(["qmd", "--foo", "bar baz"]);
|
|
});
|
|
|
|
it("supports backslash escapes inside double quotes", () => {
|
|
expect(splitShellArgs(String.raw`echo "a\"b"`)).toEqual(["echo", `a"b`]);
|
|
expect(splitShellArgs(String.raw`echo "\$HOME"`)).toEqual(["echo", "$HOME"]);
|
|
});
|
|
|
|
it("returns null for unterminated quotes", () => {
|
|
expect(splitShellArgs(`echo "oops`)).toBeNull();
|
|
expect(splitShellArgs(`echo 'oops`)).toBeNull();
|
|
});
|
|
});
|