Files
automaker/apps/server/test/test-nul-delimiter.js

49 lines
2.7 KiB
JavaScript

// Simple test to verify the NUL-based delimiter works
// This simulates what git would produce with the new format
console.log('Testing NUL-based delimiter functionality...\n');
// Simulate git log output with NUL-based separator
const gitOutputWithNul = `abc123\x00abc1\x00John Doe\x00john@example.com\x002023-01-01T12:00:00Z\x00Initial commit\x00This is a normal commit body\x00def456\x00def4\x00Jane Smith\x00jane@example.com\x002023-01-02T12:00:00Z\x00Fix bug\x00Fixed the bug with ---END--- in this message\x00ghi789\x00ghi7\x00Bob Johnson\x00bob@example.com\x002023-01-03T12:00:00Z\x00Another commit\x00This body has multiple lines\nSecond line\nThird line\x00`;
// Test splitting on NUL
console.log('1. Testing split on NUL character...');
const commits = gitOutputWithNul.split('\0').filter((block) => block.trim());
console.log(` ✓ Found ${commits.length} commits`);
console.log('\n2. Testing parsing of each commit...');
commits.forEach((commit, index) => {
const fields = commit.split('\n');
console.log(`\n Commit ${index + 1}:`);
console.log(` - Hash: ${fields[0]}`);
console.log(` - Short hash: ${fields[1]}`);
console.log(` - Author: ${fields[2]}`);
console.log(` - Email: ${fields[3]}`);
console.log(` - Date: ${fields[4]}`);
console.log(` - Subject: ${fields[5]}`);
console.log(` - Body: "${fields.slice(6).join('\n')}"`);
});
// Test with problematic ---END--- in message
console.log('\n3. Testing with ---END--- in commit message...');
const problematicOutput = `abc123\x00abc1\x00John Doe\x00john@example.com\x002023-01-01T12:00:00Z\x00Initial commit\x00This contains ---END--- but should be parsed correctly\x00`;
const problematicCommits = problematicOutput.split('\0').filter((block) => block.trim());
console.log(
` ✓ Found ${problematicCommits.length} commits (correctly ignoring ---END--- in message)`
);
// Test empty blocks
console.log('\n4. Testing with empty blocks...');
const outputWithEmptyBlocks = `abc123\x00abc1\x00John Doe\x00john@example.com\x002023-01-01T12:00:00Z\x00Valid commit\x00Body here\x00\x00def456\x00def4\x00Jane Smith\x00jane@example.com\x002023-01-02T12:00:00Z\x00Another valid commit\x00Another body\x00`;
const outputWithEmptyBlocksParsed = outputWithEmptyBlocks
.split('\0')
.filter((block) => block.trim());
console.log(` ✓ Found ${outputWithEmptyBlocksParsed.length} commits (empty blocks filtered out)`);
console.log('\n✅ All tests passed! NUL-based delimiter works correctly.');
console.log('\nSummary:');
console.log('- NUL character (\\x00) properly separates commits');
console.log('- ---END--- in commit messages is handled correctly');
console.log('- Empty blocks are filtered out');
console.log('- Multi-line commit bodies are preserved');