[router] 修复: 重启编辑器默认使用 --nologin

This commit is contained in:
furao
2026-06-08 15:06:34 +08:00
parent 0662fbe46b
commit e8e586fcd0
2 changed files with 126 additions and 15 deletions
+70
View File
@@ -0,0 +1,70 @@
'use strict';
const { test } = require('node:test');
const assert = require('node:assert/strict');
const {
EDITOR_TOOLS,
buildEditorSpawnArgs,
hasReadyAssetResult,
} = require('../src/editor-control.js');
test('editor restart/spawn expose noLogin option', () => {
var names = ['editor_restart', 'editor_spawn'];
names.forEach(function (name) {
var tool = EDITOR_TOOLS.filter(function (t) { return t.name === name; })[0];
assert.ok(tool, 'tool exists: ' + name);
assert.equal(tool.inputSchema.properties.noLogin.type, 'boolean');
});
var waitTool = EDITOR_TOOLS.filter(function (t) { return t.name === 'editor_wait_ready'; })[0];
assert.ok(waitTool, 'tool exists: editor_wait_ready');
assert.equal(waitTool.inputSchema.properties.noLogin, undefined);
});
test('buildEditorSpawnArgs adds --nologin by default', () => {
assert.deepEqual(buildEditorSpawnArgs('/project'), ['--project', '/project', '--nologin']);
});
test('buildEditorSpawnArgs can disable --nologin', () => {
assert.deepEqual(buildEditorSpawnArgs('/project', { noLogin: false }), ['--project', '/project']);
});
test('buildEditorSpawnArgs keeps project path before --nologin', () => {
var args = buildEditorSpawnArgs('/project path', {});
assert.equal(args[0], '--project');
assert.equal(args[1], '/project path');
assert.equal(args[2], '--nologin');
});
test('hasReadyAssetResult accepts raw asset object content', () => {
var result = hasReadyAssetResult({
result: {
content: [
{ name: 'assets', path: 'db://assets/config' },
],
},
});
assert.equal(result, true);
});
test('hasReadyAssetResult accepts text JSON content', () => {
var result = hasReadyAssetResult({
result: {
content: [
{ type: 'text', text: '[{"name":"assets"}]' },
],
},
});
assert.equal(result, true);
});
test('hasReadyAssetResult rejects empty or error results', () => {
assert.equal(hasReadyAssetResult({ result: { content: [] } }), false);
assert.equal(hasReadyAssetResult({ error: { message: 'not ready' } }), false);
assert.equal(hasReadyAssetResult({ result: { isError: true } }), false);
});