UNPKG

pvea_proxmox

Version:

proxmox api library for node.js.

182 lines (151 loc) 5.15 kB
// Node.js compatibility test for pvea_proxmox const { execSync } = require('child_process'); function testNodeVersion() { console.log('Testing Node.js compatibility...'); const nodeVersion = process.version; const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0]); console.log(`Current Node.js version: ${nodeVersion}`); if (majorVersion >= 16) { console.log('✓ Node.js version is compatible (>=16.0.0)'); return true; } else { console.error('✗ Node.js version is too old. Required: >=16.0.0'); return false; } } function testESModules() { console.log('\nTesting ES6+ features compatibility...'); try { // Test modern JavaScript features const asyncFunction = async () => 'test'; const arrow = () => 'arrow'; const { test } = { test: 'destructuring' }; const spread = [...[1, 2, 3]]; const template = `template ${test}`; // Test optional chaining (Node 14+) const obj = { nested: { value: 'test' } }; const optional = obj?.nested?.value; // Test nullish coalescing (Node 14+) const nullish = null ?? 'default'; console.log('✓ Modern JavaScript features are supported'); console.log(' - Async/await: ✓'); console.log(' - Arrow functions: ✓'); console.log(' - Destructuring: ✓'); console.log(' - Spread operator: ✓'); console.log(' - Template literals: ✓'); console.log(' - Optional chaining: ✓'); console.log(' - Nullish coalescing: ✓'); return true; } catch (error) { console.error('✗ Modern JavaScript features test failed:', error.message); return false; } } function testHttpsModule() { console.log('\nTesting HTTPS module compatibility...'); try { const https = require('https'); const agent = new https.Agent({ rejectUnauthorized: false }); console.log('✓ HTTPS module is working correctly'); return true; } catch (error) { console.error('✗ HTTPS module test failed:', error.message); return false; } } function testQuerystringModule() { console.log('\nTesting querystring module...'); try { const qs = require('querystring'); const encoded = qs.encode({ test: 'value', param: 'data' }); if (encoded === 'test=value&param=data') { console.log('✓ Querystring module is working correctly'); return true; } else { console.error('✗ Querystring module test failed: unexpected output'); return false; } } catch (error) { console.error('✗ Querystring module test failed:', error.message); return false; } } function testPveaRequire() { console.log('\nTesting pvea_proxmox module loading...'); try { const pveajs = require('../lib/pvea.js'); // Test if we can create an instance without errors const pvea = new pveajs('test.example.com', 'test@pve', 'password', null, 8006, true); console.log('✓ pvea_proxmox module loads successfully'); console.log('✓ Class instantiation works correctly'); return true; } catch (error) { console.error('✗ pvea_proxmox module test failed:', error.message); return false; } } function testPackageEngines() { console.log('\nTesting package.json engines compatibility...'); try { const packageJson = require('../package.json'); const requiredNode = packageJson.engines?.node; if (requiredNode) { console.log(`✓ Package specifies Node.js requirement: ${requiredNode}`); return true; } else { console.error('✗ No Node.js engine requirement specified in package.json'); return false; } } catch (error) { console.error('✗ Package.json engines test failed:', error.message); return false; } } async function runCompatibilityTests() { console.log('🔍 Running Node.js compatibility tests for pvea_proxmox...\n'); const tests = [ testNodeVersion, testESModules, testHttpsModule, testQuerystringModule, testPveaRequire, testPackageEngines ]; let passed = 0; let failed = 0; for (const test of tests) { try { const result = test(); if (result) { passed++; } else { failed++; } } catch (error) { console.error(`Test failed with error: ${error.message}`); failed++; } } console.log(`\n📊 Compatibility Test Results:`); console.log(` ✅ Passed: ${passed}`); console.log(` ❌ Failed: ${failed}`); if (failed === 0) { console.log('\n🎉 All compatibility tests passed!'); console.log('📦 This package is compatible with Node.js 16+ including Node.js 22'); console.log('\n💡 Recommended Node.js versions:'); console.log(' • Node.js 18.x (LTS)'); console.log(' • Node.js 20.x (LTS)'); console.log(' • Node.js 22.x (Current)'); process.exit(0); } else { console.log('\n❌ Some compatibility tests failed'); process.exit(1); } } // Run tests if this file is executed directly if (require.main === module) { runCompatibilityTests(); } module.exports = { runCompatibilityTests };