mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-05-29 04:10:00 +08:00
116 lines
3.8 KiB
JavaScript
116 lines
3.8 KiB
JavaScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
|
|
import {
|
|
buildHermesTerminalConfigValues,
|
|
mergeHermesTerminalConfig,
|
|
} from '../scripts/dev-api.js'
|
|
|
|
test('Hermes 终端执行配置读取会提供上游默认值', () => {
|
|
const values = buildHermesTerminalConfigValues({})
|
|
|
|
assert.deepEqual(values, {
|
|
terminalBackend: 'local',
|
|
terminalCwd: '.',
|
|
terminalTimeout: 180,
|
|
terminalLifetimeSeconds: 300,
|
|
terminalDockerMountCwdToWorkspace: false,
|
|
terminalDockerRunAsHostUser: false,
|
|
terminalContainerCpu: 1,
|
|
terminalContainerMemory: 5120,
|
|
terminalContainerDisk: 51200,
|
|
terminalContainerPersistent: true,
|
|
})
|
|
})
|
|
|
|
test('Hermes 终端执行配置读取会回显 YAML 字段', () => {
|
|
const values = buildHermesTerminalConfigValues({
|
|
terminal: {
|
|
backend: 'docker',
|
|
cwd: '/workspace',
|
|
timeout: 600,
|
|
lifetime_seconds: 1800,
|
|
docker_mount_cwd_to_workspace: true,
|
|
docker_run_as_host_user: true,
|
|
container_cpu: 4,
|
|
container_memory: 8192,
|
|
container_disk: 102400,
|
|
container_persistent: false,
|
|
},
|
|
})
|
|
|
|
assert.equal(values.terminalBackend, 'docker')
|
|
assert.equal(values.terminalCwd, '/workspace')
|
|
assert.equal(values.terminalTimeout, 600)
|
|
assert.equal(values.terminalLifetimeSeconds, 1800)
|
|
assert.equal(values.terminalDockerMountCwdToWorkspace, true)
|
|
assert.equal(values.terminalDockerRunAsHostUser, true)
|
|
assert.equal(values.terminalContainerCpu, 4)
|
|
assert.equal(values.terminalContainerMemory, 8192)
|
|
assert.equal(values.terminalContainerDisk, 102400)
|
|
assert.equal(values.terminalContainerPersistent, false)
|
|
})
|
|
|
|
test('Hermes 终端执行配置保存会保留未知字段并写入上游结构', () => {
|
|
const next = mergeHermesTerminalConfig({
|
|
model: { provider: 'anthropic' },
|
|
terminal: {
|
|
backend: 'local',
|
|
docker_image: 'custom/python-node',
|
|
docker_forward_env: ['GITHUB_TOKEN'],
|
|
custom_flag: 'keep-terminal',
|
|
},
|
|
streaming: { enabled: true },
|
|
}, {
|
|
terminalBackend: 'docker',
|
|
terminalCwd: '/workspace',
|
|
terminalTimeout: '900',
|
|
terminalLifetimeSeconds: '1200',
|
|
terminalDockerMountCwdToWorkspace: true,
|
|
terminalDockerRunAsHostUser: true,
|
|
terminalContainerCpu: '2',
|
|
terminalContainerMemory: '6144',
|
|
terminalContainerDisk: '20480',
|
|
terminalContainerPersistent: false,
|
|
})
|
|
|
|
assert.deepEqual(next.model, { provider: 'anthropic' })
|
|
assert.deepEqual(next.streaming, { enabled: true })
|
|
assert.equal(next.terminal.backend, 'docker')
|
|
assert.equal(next.terminal.cwd, '/workspace')
|
|
assert.equal(next.terminal.timeout, 900)
|
|
assert.equal(next.terminal.lifetime_seconds, 1200)
|
|
assert.equal(next.terminal.docker_mount_cwd_to_workspace, true)
|
|
assert.equal(next.terminal.docker_run_as_host_user, true)
|
|
assert.equal(next.terminal.container_cpu, 2)
|
|
assert.equal(next.terminal.container_memory, 6144)
|
|
assert.equal(next.terminal.container_disk, 20480)
|
|
assert.equal(next.terminal.container_persistent, false)
|
|
assert.equal(next.terminal.docker_image, 'custom/python-node')
|
|
assert.deepEqual(next.terminal.docker_forward_env, ['GITHUB_TOKEN'])
|
|
assert.equal(next.terminal.custom_flag, 'keep-terminal')
|
|
})
|
|
|
|
test('Hermes 终端执行配置保存会拒绝非法后端和越界值', () => {
|
|
assert.throws(
|
|
() => mergeHermesTerminalConfig({}, { terminalBackend: 'unsafe' }),
|
|
/terminal\.backend/,
|
|
)
|
|
assert.throws(
|
|
() => mergeHermesTerminalConfig({}, { terminalTimeout: '0' }),
|
|
/terminal\.timeout/,
|
|
)
|
|
assert.throws(
|
|
() => mergeHermesTerminalConfig({}, { terminalLifetimeSeconds: '-1' }),
|
|
/terminal\.lifetime_seconds/,
|
|
)
|
|
assert.throws(
|
|
() => mergeHermesTerminalConfig({}, { terminalContainerCpu: '0' }),
|
|
/terminal\.container_cpu/,
|
|
)
|
|
assert.throws(
|
|
() => mergeHermesTerminalConfig({}, { terminalContainerMemory: '127' }),
|
|
/terminal\.container_memory/,
|
|
)
|
|
})
|