contaigents
Version:
Modular AI Content Ecosystem with Audio Generation
107 lines (106 loc) โข 3.91 kB
JavaScript
import { CommandExecutionTool } from './CommandExecutionTool.js';
async function testCommandTool() {
console.log('๐งช Testing CommandExecutionTool...\n');
const baseDir = process.cwd();
const tool = new CommandExecutionTool(baseDir);
// Test 1: Simple command (pwd)
console.log('Test 1: Execute pwd command');
try {
const result1 = await tool.execute({ command: 'pwd' });
console.log('โ
Success:', result1.success);
console.log('๐ Working directory:', result1.data?.stdout?.trim());
console.log('โฑ๏ธ Execution time:', result1.data?.executionTime + 'ms');
}
catch (error) {
console.log('โ Error:', error);
}
console.log();
// Test 2: File listing
console.log('Test 2: List files in current directory');
try {
const result2 = await tool.execute({ command: 'ls -la' });
console.log('โ
Success:', result2.success);
console.log('๐ Files found:', result2.data?.stdout?.split('\n').length - 1, 'lines');
console.log('โฑ๏ธ Execution time:', result2.data?.executionTime + 'ms');
}
catch (error) {
console.log('โ Error:', error);
}
console.log();
// Test 3: Git status (if in a git repo)
console.log('Test 3: Git status');
try {
const result3 = await tool.execute({ command: 'git status --porcelain' });
console.log('โ
Success:', result3.success);
if (result3.success) {
const changes = result3.data?.stdout?.trim();
console.log('๐ Git changes:', changes ? changes.split('\n').length + ' files' : 'No changes');
}
console.log('โฑ๏ธ Execution time:', result3.data?.executionTime + 'ms');
}
catch (error) {
console.log('โ Error:', error);
}
console.log();
// Test 4: Security test - should fail
console.log('Test 4: Security test (should fail)');
try {
const result4 = await tool.execute({ command: 'sudo ls' });
console.log('โ Unexpected success:', result4.success);
console.log('Error:', result4.error);
}
catch (error) {
console.log('โ
Security check worked - command blocked');
}
console.log();
// Test 5: Timeout test
console.log('Test 5: Timeout test (1 second timeout)');
try {
const result5 = await tool.execute({
command: 'sleep 2',
timeout: 1000
});
console.log('โ Unexpected success:', result5.success);
console.log('Error:', result5.error);
}
catch (error) {
console.log('โ
Timeout worked correctly');
}
console.log();
// Test 6: Working directory test
console.log('Test 6: Working directory test');
try {
const result6 = await tool.execute({
command: 'pwd',
working_directory: '..'
});
console.log('โ
Success:', result6.success);
if (result6.success) {
console.log('๐ Parent directory:', result6.data?.stdout?.trim());
console.log('โฑ๏ธ Execution time:', result6.data?.executionTime + 'ms');
}
else {
console.log('โ Error:', result6.error);
}
}
catch (error) {
console.log('โ Error:', error);
}
console.log();
// Test 7: Node.js command
console.log('Test 7: Node.js version');
try {
const result7 = await tool.execute({ command: 'node --version' });
console.log('โ
Success:', result7.success);
console.log('๐ข Node version:', result7.data?.stdout?.trim());
console.log('โฑ๏ธ Execution time:', result7.data?.executionTime + 'ms');
}
catch (error) {
console.log('โ Error:', error);
}
console.log();
console.log('๐ Command tool testing completed!');
}
// Run the test
testCommandTool().catch(console.error);