Skip to main content
Glama
MIT License
27,120
19,787
  • Linux
  • Apple
calculateSelectiveFileMetrics.test.ts•2.35 kB
import { describe, expect, it, vi } from 'vitest'; import type { ProcessedFile } from '../../../src/core/file/fileTypes.js'; import { calculateSelectiveFileMetrics } from '../../../src/core/metrics/calculateSelectiveFileMetrics.js'; import { countTokens, type TokenCountTask } from '../../../src/core/metrics/workers/calculateMetricsWorker.js'; import type { WorkerOptions } from '../../../src/shared/processConcurrency.js'; import type { RepomixProgressCallback } from '../../../src/shared/types.js'; vi.mock('../../shared/processConcurrency', () => ({ getProcessConcurrency: () => 1, })); const mockInitTaskRunner = <T, R>(_options: WorkerOptions) => { return { run: async (task: T) => { return (await countTokens(task as TokenCountTask)) as R; }, cleanup: async () => { // Mock cleanup - no-op for tests }, }; }; describe('calculateSelectiveFileMetrics', () => { it('should calculate metrics for selective files only', async () => { const processedFiles: ProcessedFile[] = [ { path: 'file1.txt', content: 'a'.repeat(100) }, { path: 'file2.txt', content: 'b'.repeat(200) }, { path: 'file3.txt', content: 'c'.repeat(300) }, ]; const targetFilePaths = ['file1.txt', 'file3.txt']; const progressCallback: RepomixProgressCallback = vi.fn(); const result = await calculateSelectiveFileMetrics( processedFiles, targetFilePaths, 'o200k_base', progressCallback, { taskRunner: mockInitTaskRunner({ numOfTasks: 1, workerPath: '', runtime: 'worker_threads' }), }, ); expect(result).toEqual([ { path: 'file1.txt', charCount: 100, tokenCount: 13 }, { path: 'file3.txt', charCount: 300, tokenCount: 75 }, ]); }); it('should return empty array when no target files match', async () => { const processedFiles: ProcessedFile[] = [{ path: 'file1.txt', content: 'a'.repeat(100) }]; const targetFilePaths = ['nonexistent.txt']; const progressCallback: RepomixProgressCallback = vi.fn(); const result = await calculateSelectiveFileMetrics( processedFiles, targetFilePaths, 'o200k_base', progressCallback, { taskRunner: mockInitTaskRunner({ numOfTasks: 1, workerPath: '', runtime: 'worker_threads' }), }, ); expect(result).toEqual([]); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yamadashy/repomix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server