import assert from 'node:assert/strict';
import fs from 'node:fs';
import { createRequire } from 'node:module';
import os from 'node:os';
import path from 'node:path';
import test from 'node:test';

import { obfuscateMainBundleFile } from './obfuscate-main.mjs';

void test('obfuscateMainBundleFile: CJS после обфускации исполняется (кроссплатформенно)', () => {
  const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'dnd-obf-'));
  const filePath = path.join(dir, 'stub.cjs');
  fs.writeFileSync(filePath, 'exports.answer = 40 + 2;\n', 'utf8');

  obfuscateMainBundleFile(filePath);

  const out = fs.readFileSync(filePath, 'utf8');
  assert.ok(out.length > 0);
  assert.ok(!out.includes('exports.answer = 42'), 'исходный вид строки не должен сохраняться дословно');

  const requireFromTest = createRequire(import.meta.url);
  assert.equal(requireFromTest(filePath).answer, 42);
});
