'use strict'; require('../common'); const assert = require('node:assert'); const { posix, win32 } = require('node:path'); for (const implementation of [posix, win32]) { for (const count of [1, 2, 4, 8, 9, 10, 16]) { for (const prefix of ['part', '\u00e9tage', '\u4e2d']) { const names = Array.from({ length: count - 1 }, (_, index) => `${prefix}${index}`); const pattern = ['**', ...names.flatMap((name) => [name, '**']), 'file.js'].join('/'); const parts = ['root', ...names.flatMap((name) => [name, 'dir']), 'file.js']; assert.strictEqual(implementation.matchesGlob(parts.join(implementation.sep), pattern), true); if (names.length) { parts[parts.length - 3] = 'absent'; } else { parts[parts.length - 1] = 'file.txt'; } assert.strictEqual(implementation.matchesGlob(parts.join(implementation.sep), pattern), false); } } assert.strictEqual(implementation.matchesGlob('root/.hidden/src/lib/file.js', '**/src/**/file.js'), false); assert.strictEqual(implementation.matchesGlob('root/src/./lib/file.js', '**/src/**/file.js'), true); assert.strictEqual(implementation.matchesGlob('root/src/lib/file.js/', '**/src/**/file.js'), true); }