Adding Parameterised tests (#11930)

This commit is contained in:
Riddhi Dutta
2025-10-24 19:15:36 +05:30
committed by GitHub
parent 884d838a1e
commit a889c15e38
2 changed files with 59 additions and 127 deletions

View File

@@ -201,23 +201,14 @@ describe('FileExclusions', () => {
});
describe('BINARY_EXTENSIONS', () => {
it('should include common binary file extensions', () => {
expect(BINARY_EXTENSIONS).toContain('.exe');
expect(BINARY_EXTENSIONS).toContain('.dll');
expect(BINARY_EXTENSIONS).toContain('.jar');
expect(BINARY_EXTENSIONS).toContain('.zip');
});
it('should include additional binary extensions', () => {
expect(BINARY_EXTENSIONS).toContain('.dat');
expect(BINARY_EXTENSIONS).toContain('.obj');
expect(BINARY_EXTENSIONS).toContain('.wasm');
});
it('should include media file extensions', () => {
expect(BINARY_EXTENSIONS).toContain('.pdf');
expect(BINARY_EXTENSIONS).toContain('.png');
expect(BINARY_EXTENSIONS).toContain('.jpg');
it.each([
['common binary file extensions', ['.exe', '.dll', '.jar', '.zip']],
['additional binary extensions', ['.dat', '.obj', '.wasm']],
['media file extensions', ['.pdf', '.png', '.jpg']],
])('should include %s', (_, extensions) => {
extensions.forEach((ext) => {
expect(BINARY_EXTENSIONS).toContain(ext);
});
});
it('should be sorted', () => {
@@ -235,11 +226,25 @@ describe('BINARY_EXTENSIONS', () => {
});
describe('extractExtensionsFromPatterns', () => {
it('should extract simple extensions', () => {
const patterns = ['**/*.exe', '**/*.jar', '**/*.zip'];
it.each([
[
'simple extensions',
['**/*.exe', '**/*.jar', '**/*.zip'],
['.exe', '.jar', '.zip'],
],
[
'compound extensions',
['**/*.tar.gz', '**/*.min.js', '**/*.d.ts'],
['.gz', '.js', '.ts'],
],
[
'dotfiles',
['**/*.gitignore', '**/*.profile', '**/*.bashrc'],
['.bashrc', '.gitignore', '.profile'],
],
])('should extract %s', (_, patterns, expected) => {
const result = extractExtensionsFromPatterns(patterns);
expect(result).toEqual(['.exe', '.jar', '.zip']);
expect(result).toEqual(expected);
});
it('should handle brace expansion patterns', () => {
@@ -293,22 +298,6 @@ describe('extractExtensionsFromPatterns', () => {
expect(result).toEqual(['.css', '.html', '.js', '.jsx', '.ts', '.tsx']);
});
it('should handle compound extensions correctly using path.extname', () => {
const patterns = ['**/*.tar.gz', '**/*.min.js', '**/*.d.ts'];
const result = extractExtensionsFromPatterns(patterns);
// Should extract the final extension part only
expect(result).toEqual(['.gz', '.js', '.ts']);
});
it('should handle dotfiles correctly', () => {
const patterns = ['**/*.gitignore', '**/*.profile', '**/*.bashrc'];
const result = extractExtensionsFromPatterns(patterns);
// Dotfiles should be extracted properly
expect(result).toEqual(['.bashrc', '.gitignore', '.profile']);
});
it('should handle edge cases with path.extname', () => {
const patterns = ['**/*.hidden.', '**/*.config.json'];
const result = extractExtensionsFromPatterns(patterns);

View File

@@ -8,76 +8,31 @@ import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import { escapePath, unescapePath, isSubpath } from './paths.js';
describe('escapePath', () => {
it('should escape spaces', () => {
expect(escapePath('my file.txt')).toBe('my\\ file.txt');
});
it('should escape tabs', () => {
expect(escapePath('file\twith\ttabs.txt')).toBe('file\\\twith\\\ttabs.txt');
});
it('should escape parentheses', () => {
expect(escapePath('file(1).txt')).toBe('file\\(1\\).txt');
});
it('should escape square brackets', () => {
expect(escapePath('file[backup].txt')).toBe('file\\[backup\\].txt');
});
it('should escape curly braces', () => {
expect(escapePath('file{temp}.txt')).toBe('file\\{temp\\}.txt');
});
it('should escape semicolons', () => {
expect(escapePath('file;name.txt')).toBe('file\\;name.txt');
});
it('should escape ampersands', () => {
expect(escapePath('file&name.txt')).toBe('file\\&name.txt');
});
it('should escape pipes', () => {
expect(escapePath('file|name.txt')).toBe('file\\|name.txt');
});
it('should escape asterisks', () => {
expect(escapePath('file*.txt')).toBe('file\\*.txt');
});
it('should escape question marks', () => {
expect(escapePath('file?.txt')).toBe('file\\?.txt');
});
it('should escape dollar signs', () => {
expect(escapePath('file$name.txt')).toBe('file\\$name.txt');
});
it('should escape backticks', () => {
expect(escapePath('file`name.txt')).toBe('file\\`name.txt');
});
it('should escape single quotes', () => {
expect(escapePath("file'name.txt")).toBe("file\\'name.txt");
});
it('should escape double quotes', () => {
expect(escapePath('file"name.txt')).toBe('file\\"name.txt');
});
it('should escape hash symbols', () => {
expect(escapePath('file#name.txt')).toBe('file\\#name.txt');
});
it('should escape exclamation marks', () => {
expect(escapePath('file!name.txt')).toBe('file\\!name.txt');
});
it('should escape tildes', () => {
expect(escapePath('file~name.txt')).toBe('file\\~name.txt');
});
it('should escape less than and greater than signs', () => {
expect(escapePath('file<name>.txt')).toBe('file\\<name\\>.txt');
it.each([
['spaces', 'my file.txt', 'my\\ file.txt'],
['tabs', 'file\twith\ttabs.txt', 'file\\\twith\\\ttabs.txt'],
['parentheses', 'file(1).txt', 'file\\(1\\).txt'],
['square brackets', 'file[backup].txt', 'file\\[backup\\].txt'],
['curly braces', 'file{temp}.txt', 'file\\{temp\\}.txt'],
['semicolons', 'file;name.txt', 'file\\;name.txt'],
['ampersands', 'file&name.txt', 'file\\&name.txt'],
['pipes', 'file|name.txt', 'file\\|name.txt'],
['asterisks', 'file*.txt', 'file\\*.txt'],
['question marks', 'file?.txt', 'file\\?.txt'],
['dollar signs', 'file$name.txt', 'file\\$name.txt'],
['backticks', 'file`name.txt', 'file\\`name.txt'],
['single quotes', "file'name.txt", "file\\'name.txt"],
['double quotes', 'file"name.txt', 'file\\"name.txt'],
['hash symbols', 'file#name.txt', 'file\\#name.txt'],
['exclamation marks', 'file!name.txt', 'file\\!name.txt'],
['tildes', 'file~name.txt', 'file\\~name.txt'],
[
'less than and greater than signs',
'file<name>.txt',
'file\\<name\\>.txt',
],
])('should escape %s', (_, input, expected) => {
expect(escapePath(input)).toBe(expected);
});
it('should handle multiple special characters', () => {
@@ -135,26 +90,14 @@ describe('escapePath', () => {
});
describe('unescapePath', () => {
it('should unescape spaces', () => {
expect(unescapePath('my\\ file.txt')).toBe('my file.txt');
});
it('should unescape tabs', () => {
expect(unescapePath('file\\\twith\\\ttabs.txt')).toBe(
'file\twith\ttabs.txt',
);
});
it('should unescape parentheses', () => {
expect(unescapePath('file\\(1\\).txt')).toBe('file(1).txt');
});
it('should unescape square brackets', () => {
expect(unescapePath('file\\[backup\\].txt')).toBe('file[backup].txt');
});
it('should unescape curly braces', () => {
expect(unescapePath('file\\{temp\\}.txt')).toBe('file{temp}.txt');
it.each([
['spaces', 'my\\ file.txt', 'my file.txt'],
['tabs', 'file\\\twith\\\ttabs.txt', 'file\twith\ttabs.txt'],
['parentheses', 'file\\(1\\).txt', 'file(1).txt'],
['square brackets', 'file\\[backup\\].txt', 'file[backup].txt'],
['curly braces', 'file\\{temp\\}.txt', 'file{temp}.txt'],
])('should unescape %s', (_, input, expected) => {
expect(unescapePath(input)).toBe(expected);
});
it('should unescape multiple special characters', () => {