53 lines
2.1 KiB
TypeScript
53 lines
2.1 KiB
TypeScript
import fs from 'node:fs';
|
|
import fsPromises from 'node:fs/promises';
|
|
import os from 'node:os';
|
|
import path from 'node:path';
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
import { bundleOutput, computeCompileTarget } from '../src/cli/generate/artifacts.js';
|
|
|
|
const TMP_PREFIX = path.join(os.tmpdir(), 'mcporter-artifacts-test-');
|
|
|
|
describe('bundleOutput', () => {
|
|
it('resolves mcporter dependencies even without local node_modules', async () => {
|
|
const tempDir = await fsPromises.mkdtemp(TMP_PREFIX);
|
|
const entryPath = path.join(tempDir, 'entry.ts');
|
|
const content = `import { Command } from 'commander';\nimport { createRuntime } from 'mcporter';\nconsole.log(typeof Command, typeof createRuntime);\n`;
|
|
await fsPromises.writeFile(entryPath, content, 'utf8');
|
|
const outputPath = path.join(tempDir, 'bundle.js');
|
|
|
|
const result = await bundleOutput({
|
|
sourcePath: entryPath,
|
|
targetPath: outputPath,
|
|
runtimeKind: 'node',
|
|
minify: false,
|
|
bundler: 'rolldown',
|
|
});
|
|
|
|
const stats = await fsPromises.stat(result);
|
|
expect(stats.isFile()).toBe(true);
|
|
await fsPromises.rm(tempDir, { recursive: true, force: true }).catch(() => {});
|
|
});
|
|
});
|
|
|
|
describe('computeCompileTarget', () => {
|
|
it('places compiled binaries in the current working directory with unique names', () => {
|
|
const tempDir = fs.mkdtempSync(TMP_PREFIX);
|
|
const originalCwd = process.cwd();
|
|
process.chdir(tempDir);
|
|
try {
|
|
const first = computeCompileTarget(true, path.join(tempDir, 'bundle.js'), 'Chrome DevTools CLI');
|
|
const normalizedTemp = fs.realpathSync(tempDir);
|
|
const normalizedFirst = fs.realpathSync(path.dirname(first));
|
|
expect(normalizedFirst.startsWith(normalizedTemp)).toBe(true);
|
|
fs.writeFileSync(first, '');
|
|
const second = computeCompileTarget(true, path.join(tempDir, 'bundle.js'), 'Chrome DevTools CLI');
|
|
expect(second).not.toBe(first);
|
|
expect(second).toContain('chrome-devtools-cli-1');
|
|
} finally {
|
|
process.chdir(originalCwd);
|
|
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
}
|
|
});
|
|
});
|