Skip to content

Commit 1be7fe0

Browse files
committed
Add test
1 parent ec94c29 commit 1be7fe0

File tree

1 file changed

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

1 file changed

+30
-0
lines changed

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

+30
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,36 @@ 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-c', 'rgb(var(--indirect) var(--indirect) var(--indirect))'],
95+
['--indirect', 'var(--channel)'],
96+
['--channel', '255'],
97+
])
98+
99+
let state: State = {
100+
enabled: true,
101+
designSystem: {
102+
theme: { prefix: null } as any,
103+
resolveThemeValue: (name) => map.get(name) ?? null,
104+
} as DesignSystem,
105+
}
106+
107+
expect(replaceCssVarsWithFallbacks(state, 'var(--color-a)')).toBe('var(--color-a)')
108+
expect(replaceCssVarsWithFallbacks(state, 'var(--color-b)')).toBe('rgb(var(--color-b))')
109+
expect(replaceCssVarsWithFallbacks(state, 'var(--color-c)')).toBe('rgb(255 255 255)')
110+
111+
// This one is wrong but fixing it without breaking the infinite recursion guard is complex
112+
expect(replaceCssVarsWithFallbacks(state, 'var(--color-d)')).toBe(
113+
'rgb(255 var(--indirect) var(--indirect))',
114+
)
115+
})
116+
87117
test('Evaluating CSS calc expressions', () => {
88118
expect(replaceCssCalc('calc(1px + 1px)', (node) => evaluateExpression(node.value))).toBe('2px')
89119
expect(replaceCssCalc('calc(1px * 4)', (node) => evaluateExpression(node.value))).toBe('4px')

0 commit comments

Comments
 (0)