test-empty-window-config.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import os from 'os';
  2. import path from 'path';
  3. import { loadConfig } from './src/utils/config.js';
  4. let passed = 0;
  5. let failed = 0;
  6. function test(name, fn) {
  7. return Promise.resolve()
  8. .then(fn)
  9. .then(() => {
  10. console.log(` ✓ ${name}`);
  11. passed++;
  12. })
  13. .catch((err) => {
  14. console.log(` ✗ ${name}: ${err.message}`);
  15. failed++;
  16. });
  17. }
  18. function assertEqual(actual, expected, msg) {
  19. if (actual !== expected) {
  20. throw new Error(msg || `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
  21. }
  22. }
  23. function assert(condition, msg) {
  24. if (!condition) throw new Error(msg || 'Assertion failed');
  25. }
  26. console.log('\n── Empty Window Config ──');
  27. await test('web mode without explicit --dir starts in no-workspace mode', async () => {
  28. const config = loadConfig(['--web']);
  29. assertEqual(config.noWorkspace, true);
  30. assert(config.workDir.endsWith(path.join('.vl-code', 'empty-window')));
  31. });
  32. await test('explicit --dir disables no-workspace mode', async () => {
  33. const customDir = path.join(os.tmpdir(), 'vlcode-lite-config-test');
  34. const config = loadConfig(['--web', '--dir', customDir]);
  35. assertEqual(config.noWorkspace, false);
  36. assertEqual(config.workDir, customDir);
  37. });
  38. console.log(`\n── Results ──\n\n ${passed} passed, ${failed} failed\n`);
  39. process.exit(failed > 0 ? 1 : 0);