awesome-copilot/test-all.js
copilot-swe-agent[bot] d0620201ca Complete implementation: all tasks finished with comprehensive test suite
Co-authored-by: AstroSteveo <34114851+AstroSteveo@users.noreply.github.com>
2025-09-21 22:52:58 +00:00

103 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env node
/**
* Comprehensive test suite for all awesome-copilot functionality
*/
const { runTests: runUnitTests } = require('./test-effective-states');
const { runTests: runIntegrationTests } = require('./test-integration');
const { runTests: runCliTests } = require('./test-cli');
const { runTests: runApplyTests } = require('./test-apply-effective');
async function runAllTests() {
console.log('🧪 Running Awesome Copilot Comprehensive Test Suite\n');
console.log('=' * 60);
const results = {
unit: false,
integration: false,
cli: false,
apply: false
};
try {
console.log('\n📊 Unit Tests (Effective State Computation)');
console.log('-' * 45);
results.unit = await runUnitTests();
} catch (error) {
console.error('Unit tests failed with error:', error.message);
}
try {
console.log('\n🔄 Integration Tests (Toggle+Apply Idempotency)');
console.log('-' * 48);
results.integration = await runIntegrationTests();
} catch (error) {
console.error('Integration tests failed with error:', error.message);
}
try {
console.log('\n⌨ CLI Tests (List and Toggle Commands)');
console.log('-' * 40);
results.cli = await runCliTests();
} catch (error) {
console.error('CLI tests failed with error:', error.message);
}
try {
console.log('\n🎯 Apply Tests (Effective States in Apply)');
console.log('-' * 42);
results.apply = await runApplyTests();
} catch (error) {
console.error('Apply tests failed with error:', error.message);
}
// Summary
console.log('\n' + '=' * 60);
console.log('📋 Test Suite Summary');
console.log('=' * 60);
const testTypes = [
{ name: 'Unit Tests', result: results.unit, emoji: '📊' },
{ name: 'Integration Tests', result: results.integration, emoji: '🔄' },
{ name: 'CLI Tests', result: results.cli, emoji: '⌨️' },
{ name: 'Apply Tests', result: results.apply, emoji: '🎯' }
];
testTypes.forEach(test => {
const status = test.result ? '✅ PASS' : '❌ FAIL';
console.log(`${test.emoji} ${test.name.padEnd(20)} ${status}`);
});
const passedCount = Object.values(results).filter(Boolean).length;
const totalCount = Object.keys(results).length;
console.log('\n' + '-' * 60);
console.log(`Overall Result: ${passedCount}/${totalCount} test suites passed`);
if (passedCount === totalCount) {
console.log('🎉 All test suites passed! Implementation is complete.');
console.log('\n✨ Features implemented:');
console.log(' • Effective state precedence (explicit > collection > disabled)');
console.log(' • Non-destructive collection toggles with delta summaries');
console.log(' • Enhanced CLI with reason display (explicit/collection)');
console.log(' • Performance improvements with Set-based lookups');
console.log(' • Comprehensive configuration handling');
console.log(' • Stable config hashing and idempotent operations');
return true;
} else {
console.log('💥 Some test suites failed. Check individual test output above.');
return false;
}
}
if (require.main === module) {
runAllTests().then(success => {
process.exit(success ? 0 : 1);
}).catch(error => {
console.error('Test suite runner error:', error);
process.exit(1);
});
}
module.exports = { runAllTests };