46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
import { describe, it } from 'node:test';
|
|
import { strict as assert } from 'node:assert';
|
|
import * as fs from 'node:fs';
|
|
import * as os from 'node:os';
|
|
import * as path from 'node:path';
|
|
import { initCommand } from '../../src/commands/init.js';
|
|
|
|
describe('mx init command', () => {
|
|
it('creates matrix.json and scaffold directories', async () => {
|
|
const cwd = fs.mkdtempSync(path.join(os.tmpdir(), 'mx-init-'));
|
|
try {
|
|
const result = await initCommand({
|
|
cwd,
|
|
name: 'demo-package',
|
|
version: '1.2.3',
|
|
description: 'demo',
|
|
yes: true,
|
|
});
|
|
|
|
assert.equal(result.rootDir, cwd);
|
|
assert.equal(fs.existsSync(path.join(cwd, 'matrix.json')), true);
|
|
assert.equal(fs.existsSync(path.join(cwd, 'src')), true);
|
|
assert.equal(fs.existsSync(path.join(cwd, 'examples')), true);
|
|
assert.equal(fs.existsSync(path.join(cwd, 'skills')), true);
|
|
assert.equal(fs.existsSync(path.join(cwd, 'tests')), true);
|
|
|
|
const manifest = JSON.parse(fs.readFileSync(path.join(cwd, 'matrix.json'), 'utf8')) as {
|
|
name: string;
|
|
version: string;
|
|
description: string;
|
|
runtime: { language: string; entry: string };
|
|
components: unknown[];
|
|
permissions: { fsPolicy: string };
|
|
};
|
|
assert.equal(manifest.name, 'demo-package');
|
|
assert.equal(manifest.version, '1.2.3');
|
|
assert.equal(manifest.description, 'demo');
|
|
assert.equal(manifest.runtime.entry, 'dist/index.js');
|
|
assert.equal(Array.isArray(manifest.components), true);
|
|
assert.equal(manifest.permissions.fsPolicy, 'none');
|
|
} finally {
|
|
fs.rmSync(cwd, { recursive: true, force: true });
|
|
}
|
|
});
|
|
});
|