mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
### 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>
58 lines
1.3 KiB
TypeScript
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 🤣"]);
|
|
});
|
|
});
|