54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { globToRegex } from './utils';
|
|
|
|
describe('globToRegex', () => {
|
|
it('matches a file by extension using *', () => {
|
|
const re = globToRegex('*.yml');
|
|
expect(re.test('foo.yml')).toBe(true);
|
|
expect(re.test('foo.ts')).toBe(false);
|
|
});
|
|
|
|
it('wraps pattern in "*" when not explicitly used', () => {
|
|
const re = globToRegex('yml');
|
|
expect(re.test('foo.yml')).toBe(true);
|
|
expect(re.test('foo.ts')).toBe(false);
|
|
});
|
|
|
|
it('matches nested paths with **', () => {
|
|
const re = globToRegex('src/**');
|
|
expect(re.test('src/foo.ts')).toBe(true);
|
|
expect(re.test('src/nested/bar.ts')).toBe(true);
|
|
expect(re.test('lib/foo.ts')).toBe(false);
|
|
});
|
|
|
|
it('is case-insensitive', () => {
|
|
const re = globToRegex('*.YML');
|
|
expect(re.test('foo.yml')).toBe(true);
|
|
expect(re.test('FOO.YML')).toBe(true);
|
|
});
|
|
|
|
it('escapes dots so they match only literal dots', () => {
|
|
const re = globToRegex('file.ts');
|
|
expect(re.test('file.ts')).toBe(true);
|
|
expect(re.test('fileXts')).toBe(false);
|
|
});
|
|
|
|
it('matches exact paths with no wildcards', () => {
|
|
const re = globToRegex('src/foo.ts');
|
|
expect(re.test('src/foo.ts')).toBe(true);
|
|
expect(re.test('src/bar.ts')).toBe(false);
|
|
});
|
|
|
|
it('matches any path with a bare wildcard', () => {
|
|
const re = globToRegex('*');
|
|
expect(re.test('anything')).toBe(true);
|
|
});
|
|
|
|
it('matches exactly one character with ?', () => {
|
|
const re = globToRegex('te?t');
|
|
expect(re.test('testy')).toBe(true);
|
|
expect(re.test('text')).toBe(true);
|
|
expect(re.test('tesst')).toBe(false);
|
|
expect(re.test('tet')).toBe(false);
|
|
});
|
|
});
|