76 lines
3.2 KiB
JavaScript
Executable File
76 lines
3.2 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
import assert from 'node:assert/strict'
|
|
import { spawnSync } from 'node:child_process'
|
|
import { resolve } from 'node:path'
|
|
|
|
function render(overrides = {}) {
|
|
const env = {
|
|
...process.env,
|
|
DSH_DEFAULT_WORKSPACE: '/workspace',
|
|
DSH_IMAGE_TAG: 'latest',
|
|
DSH_LISTEN_ADDRESS: '0.0.0.0',
|
|
DSH_PORT: '3080',
|
|
DSH_PROXY_POLYFILL: 'true',
|
|
DSH_TELEMETRY_DISABLED: 'true',
|
|
DSH_TRUSTED_HOSTS: '',
|
|
DSH_WORKSPACE: './workspace',
|
|
...overrides,
|
|
}
|
|
if (!Object.hasOwn(overrides, 'DSH_SUDO_ENABLED')) delete env.DSH_SUDO_ENABLED
|
|
|
|
const result = spawnSync(
|
|
'docker',
|
|
['compose', '--env-file', '/dev/null', '-f', 'docker-compose.yaml', 'config', '--format', 'json'],
|
|
{
|
|
encoding: 'utf8',
|
|
env,
|
|
},
|
|
)
|
|
assert.equal(result.status, 0, result.stderr)
|
|
return JSON.parse(result.stdout).services['deepseek-harness']
|
|
}
|
|
|
|
const defaults = render()
|
|
assert.equal(defaults.image, 'szcq/deepseek-harness:latest')
|
|
assert.equal(defaults.container_name, 'deepseek-harness')
|
|
assert.equal(defaults.ports[0].host_ip, '0.0.0.0')
|
|
assert.equal(defaults.ports[0].published, '3080')
|
|
assert.equal(Object.hasOwn(defaults.environment, 'DSH_PROXY_USERNAME'), false)
|
|
assert.equal(Object.hasOwn(defaults.environment, 'DSH_PROXY_PASSWORD'), false)
|
|
assert.equal(Object.hasOwn(defaults.environment, 'DSH_PLATFORM_PASSWORD'), false)
|
|
assert.equal(defaults.environment.DSH_PROXY_POLYFILL, 'true')
|
|
assert.equal(defaults.environment.DSH_TRUSTED_HOSTS, '')
|
|
assert.equal(Object.hasOwn(defaults.environment, 'DSH_UPDATE_METADATA_URL'), false)
|
|
assert.deepEqual(defaults.group_add, ['dsh-sudo-false'])
|
|
assert.equal(defaults.environment.DSH_EXPERIMENTAL_PROBATION_SECONDS, '120')
|
|
assert.equal(defaults.environment.DSH_LOG_MAX_BYTES, '104857600')
|
|
assert.equal(defaults.environment.DSH_PLATFORM_DATA, '/data/platform')
|
|
assert.equal(defaults.environment.DSH_HOME, '/data/dsh')
|
|
assert.deepEqual(defaults.volumes.map(volume => volume.target).sort(), ['/data/dsh', '/data/platform', '/workspace'])
|
|
assert.equal(defaults.volumes.find(volume => volume.target === '/data/dsh').type, 'volume')
|
|
assert.equal(defaults.volumes.find(volume => volume.target === '/data/platform').type, 'volume')
|
|
assert.equal(defaults.volumes.find(volume => volume.target === '/workspace').source, resolve('./workspace'))
|
|
|
|
const configured = render({
|
|
DSH_IMAGE_TAG: '1.0.0',
|
|
DSH_LISTEN_ADDRESS: '0.0.0.0',
|
|
DSH_PORT: '4080',
|
|
DSH_PROXY_POLYFILL: 'false',
|
|
DSH_SUDO_ENABLED: 'true',
|
|
DSH_TELEMETRY_DISABLED: 'false',
|
|
DSH_TRUSTED_HOSTS: '192.168.1.10,dsh.example:8443',
|
|
})
|
|
assert.equal(configured.image, 'szcq/deepseek-harness:1.0.0')
|
|
assert.equal(configured.ports[0].host_ip, '0.0.0.0')
|
|
assert.equal(configured.ports[0].published, '4080')
|
|
assert.equal(Object.hasOwn(configured.environment, 'DSH_PROXY_USERNAME'), false)
|
|
assert.equal(Object.hasOwn(configured.environment, 'DSH_PROXY_PASSWORD'), false)
|
|
assert.equal(Object.hasOwn(configured.environment, 'DSH_PLATFORM_PASSWORD'), false)
|
|
assert.equal(configured.environment.DSH_PROXY_POLYFILL, 'false')
|
|
assert.equal(configured.environment.DSH_TELEMETRY_DISABLED, 'false')
|
|
assert.equal(configured.environment.DSH_TRUSTED_HOSTS, '192.168.1.10,dsh.example:8443')
|
|
assert.deepEqual(configured.group_add, ['dsh-sudo-true'])
|
|
|
|
console.log('Compose configuration checks passed')
|