mirror of
https://github.com/yamadashy/repomix.git
synced 2026-01-28 15:08:22 +01:00
This feature allows users to include git log information in the output to help AI understand development patterns and file change relationships. Key changes: - Added --include-logs and --include-logs-count CLI options - Default to 50 commits, configurable via CLI and config file - Includes commit date, message, and changed file paths (excludes commit hashes) - Added security checks and metrics calculation for git logs - Updated output templates to include git logs section - Comprehensive test coverage and TypeScript fixes Resolves user request for including git commit history to provide development context for AI analysis.
41 lines
1.8 KiB
TypeScript
41 lines
1.8 KiB
TypeScript
import { describe, expect, it, vi } from 'vitest';
|
|
import type { RepomixConfigMerged } from '../../../src/config/configSchema.js';
|
|
import type { RawFile } from '../../../src/core/file/fileTypes.js';
|
|
import type { SuspiciousFileResult } from '../../../src/core/security/securityCheck.js';
|
|
import { validateFileSafety } from '../../../src/core/security/validateFileSafety.js';
|
|
import type { RepomixProgressCallback } from '../../../src/shared/types.js';
|
|
|
|
describe('validateFileSafety', () => {
|
|
it('should validate file safety and return safe files and paths', async () => {
|
|
const rawFiles: RawFile[] = [
|
|
{ path: 'file1.txt', content: 'content1' },
|
|
{ path: 'file2.txt', content: 'content2' },
|
|
{ path: 'file3.txt', content: 'content3' },
|
|
];
|
|
const safeRawFiles = [rawFiles[0], rawFiles[1]];
|
|
const config: RepomixConfigMerged = {
|
|
security: { enableSecurityCheck: true },
|
|
} as RepomixConfigMerged;
|
|
const progressCallback: RepomixProgressCallback = vi.fn();
|
|
const suspiciousFilesResults: SuspiciousFileResult[] = [
|
|
{ filePath: 'file2.txt', messages: ['something suspicious.'], type: 'file' },
|
|
];
|
|
const deps = {
|
|
runSecurityCheck: vi.fn().mockResolvedValue(suspiciousFilesResults),
|
|
filterOutUntrustedFiles: vi.fn().mockReturnValue(safeRawFiles),
|
|
};
|
|
|
|
const result = await validateFileSafety(rawFiles, progressCallback, config, undefined, undefined, deps);
|
|
|
|
expect(deps.runSecurityCheck).toHaveBeenCalledWith(rawFiles, progressCallback, undefined, undefined);
|
|
expect(deps.filterOutUntrustedFiles).toHaveBeenCalledWith(rawFiles, suspiciousFilesResults);
|
|
expect(result).toEqual({
|
|
safeRawFiles,
|
|
safeFilePaths: ['file1.txt', 'file2.txt'],
|
|
suspiciousFilesResults,
|
|
suspiciousGitDiffResults: [],
|
|
suspiciousGitLogResults: [],
|
|
});
|
|
});
|
|
});
|