@@ -4,7 +4,7 @@ import { ProjectLocator } from './project-locator'
4
4
import { URL , fileURLToPath } from 'url'
5
5
import { Settings } from '@tailwindcss/language-service/src/util/state'
6
6
import { createResolver } from './resolver'
7
- import { css , defineTest , js , json , scss , Storage , TestUtils } from './testing'
7
+ import { css , defineTest , js , json , scss , Storage , symlinkTo , TestUtils } from './testing'
8
8
9
9
let settings : Settings = {
10
10
tailwindCSS : {
@@ -321,6 +321,41 @@ testLocator({
321
321
] ,
322
322
} )
323
323
324
+ testLocator ( {
325
+ // options: { skip: true },
326
+ name : 'Recursive symlinks do not cause infinite traversal loops' ,
327
+ fs : {
328
+ 'src/a/b/c/index.css' : css `
329
+ @import 'tailwindcss';
330
+ ` ,
331
+ 'src/a/b/c/z' : symlinkTo ( 'src' ) ,
332
+ 'src/a/b/x' : symlinkTo ( 'src' ) ,
333
+ 'src/a/b/y' : symlinkTo ( 'src' ) ,
334
+ 'src/a/b/z' : symlinkTo ( 'src' ) ,
335
+ 'src/a/x' : symlinkTo ( 'src' ) ,
336
+
337
+ 'src/b/c/d/z' : symlinkTo ( 'src' ) ,
338
+ 'src/b/c/d/index.css' : css `` ,
339
+ 'src/b/c/x' : symlinkTo ( 'src' ) ,
340
+ 'src/b/c/y' : symlinkTo ( 'src' ) ,
341
+ 'src/b/c/z' : symlinkTo ( 'src' ) ,
342
+ 'src/b/x' : symlinkTo ( 'src' ) ,
343
+
344
+ 'src/c/d/e/z' : symlinkTo ( 'src' ) ,
345
+ 'src/c/d/x' : symlinkTo ( 'src' ) ,
346
+ 'src/c/d/y' : symlinkTo ( 'src' ) ,
347
+ 'src/c/d/z' : symlinkTo ( 'src' ) ,
348
+ 'src/c/x' : symlinkTo ( 'src' ) ,
349
+ } ,
350
+ expected : [
351
+ {
352
+ version : '4.0.6 (bundled)' ,
353
+ config : '/src/a/b/c/index.css' ,
354
+ content : [ ] ,
355
+ } ,
356
+ ] ,
357
+ } )
358
+
324
359
// ---
325
360
326
361
function testLocator ( {
0 commit comments