Files
bun.sh/test/js/bun/shell/brace.test.ts
Zack Radisic ee88c489ab shell: fix $.braces(...) on unicode inputs, support more deeply nested braces (#21709)
### What does this PR do?

- Fixes `$.braces(...)` not working properly on non-ascii inputs
- Switches braces code to use `SmallList` to support more deeply nested
brace expansion

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-08-08 18:12:42 -07:00

58 lines
1.3 KiB
TypeScript

import { $ } from "bun";
import { describe, expect, test } from "bun:test";
describe("$.braces", () => {
test("no-op", () => {
const result = $.braces(`echo 123`);
expect(result).toEqual(["echo 123"]);
});
test("2", () => {
const result = $.braces(`echo {123,456}`);
expect(result).toEqual(["echo 123", "echo 456"]);
});
test("3", () => {
const result = $.braces(`echo {123,456,789}`);
expect(result).toEqual(["echo 123", "echo 456", "echo 789"]);
});
test("nested", () => {
const result = $.braces(`echo {123,{456,789}}`);
expect(result).toEqual(["echo 123", "echo 456", "echo 789"]);
});
test("nested 2", () => {
const result = $.braces(`echo {123,{456,789},abc}`);
expect(result).toEqual(["echo 123", "echo 456", "echo 789", "echo abc"]);
});
test("very deeply nested", () => {
const result = $.braces(`{1,{2,{3,{4,{5,{6,{7,{8,{9,{10,{11,{12,{13,{14,{15,{16,{17}}}}}}}}}}}}}}}}}`);
expect(result).toEqual([
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
]);
});
test("unicode", () => {
const result = $.braces(`lol {😂,🫵,🤣}`);
expect(result).toEqual(["lol 😂", "lol 🫵", "lol 🤣"]);
});
});