Skip to content

Commit e791f7f

Browse files
test(tui): cover XML/HTML syntax token fallbacks
1 parent a90e16a commit e791f7f

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { expect, test } from "bun:test"
2+
import { RGBA } from "@opentui/core"
3+
import { DEFAULT_THEMES, resolveTheme } from "../../../src/cli/cmd/tui/context/theme-resolver"
4+
5+
test("resolveTheme falls back to legacy XML/HTML syntax colors", () => {
6+
const theme = {
7+
...DEFAULT_THEMES.opencode,
8+
theme: {
9+
...DEFAULT_THEMES.opencode.theme,
10+
},
11+
}
12+
13+
delete theme.theme.syntaxTag
14+
delete theme.theme.syntaxAttribute
15+
delete theme.theme.syntaxTagDelimiter
16+
17+
const resolved = resolveTheme(theme, "dark")
18+
19+
expect(resolved.syntaxTag).toBe(resolved.error)
20+
expect(resolved.syntaxAttribute).toBe(resolved.syntaxKeyword)
21+
expect(resolved.syntaxTagDelimiter).toBe(resolved.syntaxOperator)
22+
})
23+
24+
test("resolveTheme honors explicit XML/HTML syntax tokens", () => {
25+
const syntaxTag = RGBA.fromInts(10, 20, 30)
26+
const syntaxAttribute = RGBA.fromInts(40, 50, 60)
27+
const syntaxTagDelimiter = RGBA.fromInts(70, 80, 90)
28+
29+
const theme = {
30+
...DEFAULT_THEMES.opencode,
31+
theme: {
32+
...DEFAULT_THEMES.opencode.theme,
33+
syntaxTag,
34+
syntaxAttribute,
35+
syntaxTagDelimiter,
36+
},
37+
}
38+
39+
const resolved = resolveTheme(theme, "dark")
40+
41+
expect(resolved.syntaxTag).toBe(syntaxTag)
42+
expect(resolved.syntaxAttribute).toBe(syntaxAttribute)
43+
expect(resolved.syntaxTagDelimiter).toBe(syntaxTagDelimiter)
44+
})

0 commit comments

Comments
 (0)