Files
oh-my-pi/packages/coding-agent/test/discovery/helpers.test.ts
T
can1357 cb5bbbf382 refactor(coding-agent): flattened directory structure, eliminated core/ folder
- Eliminated core/ directory (252 files, 23 subdirs → distributed)
- Reduced max nesting from 9 levels to 5 levels
- Promoted tool subdirs to top level: exa/, lsp/, patch/, task/, web/
- Merged web-scrapers/ + web-search/ into web/{scrapers,search}/
- Flattened modes/interactive/ to modes/
- Split execution/ into: ipy/ (python), exec/ (bash), ssh/
- Renamed ipy/python-*.ts to ipy/*.ts (executor, kernel, etc.)
- Flattened cursor/exec-bridge.ts to cursor.ts
- Created logical groupings: config/, session/, extensibility/, export/
- Updated all imports across 500+ files
2026-01-23 12:24:47 +01:00

132 lines
2.9 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { parseFrontmatter } from "$c/utils/frontmatter";
describe("parseFrontmatter", () => {
const parse = (content: string) => parseFrontmatter(content, { source: "tests:frontmatter", level: "off" });
test("parses simple key-value pairs", () => {
const content = `---
name: test
enabled: true
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({ name: "test", enabled: true });
expect(result.body).toBe("Body content");
});
test("parses YAML list syntax", () => {
const content = `---
tags:
- javascript
- typescript
- react
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({
tags: ["javascript", "typescript", "react"],
});
expect(result.body).toBe("Body content");
});
test("parses multi-line string values", () => {
const content = `---
description: |
This is a multi-line
description block
with several lines
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({
description: "This is a multi-line\ndescription block\nwith several lines\n",
});
expect(result.body).toBe("Body content");
});
test("parses nested objects", () => {
const content = `---
config:
server:
port: 3000
host: localhost
database:
name: mydb
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({
config: {
server: { port: 3000, host: "localhost" },
database: { name: "mydb" },
},
});
expect(result.body).toBe("Body content");
});
test("parses mixed complex YAML", () => {
const content = `---
name: complex-test
version: 1.0.0
tags:
- prod
- critical
metadata:
author: tester
created: 2024-01-01
description: |
Multi-line description
with formatting
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({
name: "complex-test",
version: "1.0.0",
tags: ["prod", "critical"],
metadata: {
author: "tester",
created: "2024-01-01",
},
description: "Multi-line description\nwith formatting\n",
});
expect(result.body).toBe("Body content");
});
test("handles missing frontmatter", () => {
const content = "Just body content";
const result = parse(content);
expect(result.frontmatter).toEqual({});
expect(result.body).toBe("Just body content");
});
test("handles invalid YAML in frontmatter", () => {
const content = `---
invalid: [unclosed array
---
Body content`;
const result = parse(content);
// Simple fallback parser extracts key:value pairs it can parse
expect(result.frontmatter).toEqual({ invalid: "[unclosed array" });
// Body is still extracted even with invalid YAML
expect(result.body).toBe("Body content");
});
test("handles empty frontmatter", () => {
const content = `---
---
Body content`;
const result = parse(content);
expect(result.frontmatter).toEqual({});
expect(result.body).toBe("Body content");
});
});