test-project-profile-theme-seeding.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env node
  2. import assert from 'assert';
  3. import fs from 'fs';
  4. import os from 'os';
  5. import path from 'path';
  6. import { ensureProjectProfile } from './src/server/helpers.js';
  7. function mkProjectDir(name) {
  8. const dir = fs.mkdtempSync(path.join(os.tmpdir(), `${name}-`));
  9. fs.mkdirSync(path.join(dir, '.vl-code'), { recursive: true });
  10. fs.mkdirSync(path.join(dir, 'Theme'), { recursive: true });
  11. return dir;
  12. }
  13. function cleanup(dir) {
  14. fs.rmSync(dir, { recursive: true, force: true });
  15. }
  16. function main() {
  17. const seedWorkflowDir = path.join(process.cwd(), 'public', 'seed-workflows');
  18. const customThemeDir = mkProjectDir('vlcode-theme-custom');
  19. fs.writeFileSync(path.join(customThemeDir, 'Theme', 'Custom.vth'), '// VL_VERSION:3.6\n');
  20. ensureProjectProfile(customThemeDir, seedWorkflowDir);
  21. assert.equal(fs.existsSync(path.join(customThemeDir, 'Theme', 'Theme.vth')), false, 'should not seed Theme.vth when project already has a theme');
  22. cleanup(customThemeDir);
  23. const emptyThemeDir = mkProjectDir('vlcode-theme-empty');
  24. ensureProjectProfile(emptyThemeDir, seedWorkflowDir);
  25. assert.equal(fs.existsSync(path.join(emptyThemeDir, 'Theme', 'Theme.vth')), true, 'should seed Theme.vth for empty projects');
  26. cleanup(emptyThemeDir);
  27. console.log('\n── Project Profile Theme Seeding ──');
  28. console.log('PASS test-project-profile-theme-seeding.js');
  29. }
  30. main();