glob.test.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { describe, expect, test } from "bun:test";
  2. import { extractGlobBaseDirectory } from "../glob";
  3. describe("extractGlobBaseDirectory", () => {
  4. test("extracts base dir from glob with *", () => {
  5. const result = extractGlobBaseDirectory("src/utils/*.ts");
  6. expect(result.baseDir).toBe("src/utils");
  7. expect(result.relativePattern).toBe("*.ts");
  8. });
  9. test("extracts base dir from glob with **", () => {
  10. const result = extractGlobBaseDirectory("src/**/*.ts");
  11. expect(result.baseDir).toBe("src");
  12. expect(result.relativePattern).toBe("**/*.ts");
  13. });
  14. test("returns dirname for literal path", () => {
  15. const result = extractGlobBaseDirectory("src/utils/file.ts");
  16. expect(result.baseDir).toBe("src/utils");
  17. expect(result.relativePattern).toBe("file.ts");
  18. });
  19. test("handles glob starting with pattern", () => {
  20. const result = extractGlobBaseDirectory("*.ts");
  21. expect(result.baseDir).toBe("");
  22. expect(result.relativePattern).toBe("*.ts");
  23. });
  24. test("handles braces pattern", () => {
  25. const result = extractGlobBaseDirectory("src/{a,b}/*.ts");
  26. expect(result.baseDir).toBe("src");
  27. expect(result.relativePattern).toBe("{a,b}/*.ts");
  28. });
  29. test("handles question mark pattern", () => {
  30. const result = extractGlobBaseDirectory("src/?.ts");
  31. expect(result.baseDir).toBe("src");
  32. expect(result.relativePattern).toBe("?.ts");
  33. });
  34. });