mirror of
https://github.com/HappyLifeOk/cc-3-8-x-mcp.git
synced 2026-08-20 05:27:02 +00:00
36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const { test, after } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('fs');
|
|
const os = require('os');
|
|
const path = require('path');
|
|
|
|
const { compressUuid } = require('../src/id.js');
|
|
const { clearCache, resolveClassIdByName } = require('../src/classid-resolver.js');
|
|
|
|
const tmpRoots = [];
|
|
|
|
after(() => {
|
|
clearCache();
|
|
for (const root of tmpRoots) {
|
|
try { fs.rmSync(root, { recursive: true, force: true }); } catch (_) {}
|
|
}
|
|
});
|
|
|
|
test('ClassIdResolver: 扫描 extensions 下的 ccclass 脚本', () => {
|
|
const project = fs.mkdtempSync(path.join(os.tmpdir(), 'classid-ext-project-'));
|
|
tmpRoots.push(project);
|
|
|
|
fs.writeFileSync(path.join(project, 'package.json'), '{}');
|
|
fs.mkdirSync(path.join(project, 'assets', 'scripts'), { recursive: true });
|
|
fs.mkdirSync(path.join(project, 'extensions', 'cc-state-controller', 'lib'), { recursive: true });
|
|
|
|
const uuid = 'fca1c7d0-b8e9-4a6f-9c3d-2e5f18a04b7c';
|
|
const tsPath = path.join(project, 'extensions', 'cc-state-controller', 'lib', 'StateController.ts');
|
|
fs.writeFileSync(tsPath, "import { _decorator } from 'cc';\nconst { ccclass } = _decorator;\n@ccclass('StateController')\nexport class StateController {}\n");
|
|
fs.writeFileSync(tsPath + '.meta', JSON.stringify({ uuid }));
|
|
|
|
assert.equal(resolveClassIdByName('StateController', project), compressUuid(uuid));
|
|
});
|