-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.js
More file actions
64 lines (52 loc) · 2.08 KB
/
test.js
File metadata and controls
64 lines (52 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
const { packDirectory, countTokens, formatOutput } = require('./src/packer');
const fs = require('fs');
const path = require('path');
async function runTests() {
console.log('running tests... 💀\n');
let passed = 0;
let failed = 0;
function test(name, condition) {
if (condition) {
console.log(`✓ ${name}`);
passed++;
} else {
console.log(`✗ ${name}`);
failed++;
}
}
// Create temp test directory
const testDir = path.join(__dirname, 'test_temp');
if (!fs.existsSync(testDir)) fs.mkdirSync(testDir);
fs.writeFileSync(path.join(testDir, 'test.js'), 'console.log("test");');
fs.writeFileSync(path.join(testDir, 'readme.md'), '# Test');
// Test packDirectory
const result = await packDirectory(testDir, {});
test('packDirectory returns object', typeof result === 'object');
test('result has tree', typeof result.tree === 'string');
test('result has files array', Array.isArray(result.files));
test('found test files', result.files.length >= 2);
// Test formatOutput
const markdown = formatOutput(result, 'markdown');
test('markdown format works', markdown.includes('# '));
test('markdown contains file tree', markdown.includes('File Tree'));
const xml = formatOutput(result, 'xml');
test('xml format works', xml.includes('<?xml'));
test('xml has context tag', xml.includes('<context'));
const plain = formatOutput(result, 'plain');
test('plain format works', plain.includes('==='));
// Test countTokens
const tokens = countTokens('hello world this is a test');
test('countTokens returns number', typeof tokens === 'number');
test('countTokens reasonable estimate', tokens > 0 && tokens < 100);
// Test with extensions filter
const jsOnly = await packDirectory(testDir, { extensions: ['js'] });
test('extension filter works', jsOnly.files.every(f => f.path.endsWith('.js')));
// Cleanup
fs.rmSync(testDir, { recursive: true });
console.log(`\n${passed}/${passed + failed} tests passed`);
process.exit(failed > 0 ? 1 : 0);
}
runTests().catch(err => {
console.error('test error:', err);
process.exit(1);
});