Skip to content

Commit 066709b

Browse files
committed
Add test
1 parent ec94c29 commit 066709b

File tree

1 file changed

+40
-0
lines changed
  • packages/tailwindcss-language-service/src/util/rewriting

1 file changed

+40
-0
lines changed

packages/tailwindcss-language-service/src/util/rewriting/index.test.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,46 @@ test('replacing CSS variables with their fallbacks (when they have them)', () =>
8484
expect(replaceCssVarsWithFallbacks(state, 'var(--circular-3)')).toBe('var(--circular-2)')
8585
})
8686

87+
test('recursive theme replacements', () => {
88+
let map = new Map<string, string>([
89+
['--color-a', 'var(--color-a)'],
90+
['--color-b', 'rgb(var(--color-b))'],
91+
['--color-c', 'rgb(var(--channel) var(--channel) var(--channel))'],
92+
['--channel', '255'],
93+
94+
['--color-d', 'rgb(var(--indirect) var(--indirect) var(--indirect))'],
95+
['--indirect', 'var(--channel)'],
96+
['--channel', '255'],
97+
98+
['--mutual-a', 'calc(var(--mutual-b) * 1)'],
99+
['--mutual-b', 'calc(var(--mutual-a) + 1)'],
100+
])
101+
102+
let state: State = {
103+
enabled: true,
104+
designSystem: {
105+
theme: { prefix: null } as any,
106+
resolveThemeValue: (name) => map.get(name) ?? null,
107+
} as DesignSystem,
108+
}
109+
110+
expect(replaceCssVarsWithFallbacks(state, 'var(--color-a)')).toBe('var(--color-a)')
111+
expect(replaceCssVarsWithFallbacks(state, 'var(--color-b)')).toBe('rgb(var(--color-b))')
112+
expect(replaceCssVarsWithFallbacks(state, 'var(--color-c)')).toBe('rgb(255 255 255)')
113+
114+
// This one is wrong but fixing it without breaking the infinite recursion guard is complex
115+
expect(replaceCssVarsWithFallbacks(state, 'var(--color-d)')).toBe(
116+
'rgb(255 var(--indirect) var(--indirect))',
117+
)
118+
119+
expect(replaceCssVarsWithFallbacks(state, 'var(--mutual-a)')).toBe(
120+
'calc(calc(var(--mutual-a) + 1) * 1)',
121+
)
122+
expect(replaceCssVarsWithFallbacks(state, 'var(--mutual-b)')).toBe(
123+
'calc(calc(var(--mutual-b) * 1) + 1)',
124+
)
125+
})
126+
87127
test('Evaluating CSS calc expressions', () => {
88128
expect(replaceCssCalc('calc(1px + 1px)', (node) => evaluateExpression(node.value))).toBe('2px')
89129
expect(replaceCssCalc('calc(1px * 4)', (node) => evaluateExpression(node.value))).toBe('4px')

0 commit comments

Comments
 (0)