- Bump bareOsCtxApiVersion to 1.48.0; sync CHANGELOG, compatibility matrix, syscalls.example.json, ctx d.ts, generated ctx-client helper - POSIX: getconf _SC_NPROCESSORS_ONLN; shell set -o pipefail + BARE_OS_PIPESTATUS; posix_utilities schema v2 + JSON Schema; generated dashboard refresh - Host/subprocess: bare-subprocess then Node child_process spawn; optional backend on ctx.bareOsTrySpawnHostSubprocess; bin-worker WASM wall budget - VFS: BARE_OS_VFS_SYSTEM_IMAGE_WRITE for system image writes + warm-cache eviction path; guest /.bare/account EACCES test; environ TOKEN redaction test - Docs: corestore snapshot non-goal in package-bare-os-booter; PEAR-RUN links → docs/PEAR-RUN.md; POSIX pretest matrix in scripts/README + dev guide; environment appendix (PIPESTATUS, WASM_MS, system image write) - Seeder: keep kernel/ mirror in sync after bundle + coreutils builds Verified: npm test -w bare-os-booter, npm run pretest
94 lines
3.0 KiB
JavaScript
94 lines
3.0 KiB
JavaScript
/**
|
|
* Minimal **`brittle-bare`** suite (no Node **`brittle-node`** / Hyperdrive session).
|
|
* Run: **`npm run test:bare -w bare-os-booter`** (concatenates **`test.identity.js`**).
|
|
*/
|
|
import test from 'brittle'
|
|
import { createBareOsDiskOsBridge } from './lib/bare-os-disk-os-bridge.js'
|
|
import { BARE_OS_CTX_API_VERSION } from './lib/bare-os-ctx-api.js'
|
|
|
|
test('disk.os replication_operator_intent EPERM when cap RPC off', async (t) => {
|
|
const bridge = createBareOsDiskOsBridge({
|
|
drive: null,
|
|
bareOsIpc: { list: () => [] },
|
|
ctxApiVersion: BARE_OS_CTX_API_VERSION,
|
|
systemRevision: null,
|
|
bootStartedMs: Date.now()
|
|
})
|
|
const prev = process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC
|
|
if (prev !== undefined) delete process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC
|
|
try {
|
|
const raw = await bridge.execRpc(
|
|
'bare_os',
|
|
'replication_operator_intent',
|
|
['{}']
|
|
)
|
|
const j = JSON.parse(raw)
|
|
t.is(j.schema, 2)
|
|
t.is(j.ok, false)
|
|
t.is(j.code, 'EPERM')
|
|
} finally {
|
|
if (prev !== undefined) process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC = prev
|
|
}
|
|
})
|
|
|
|
test('disk.os replication_operator_intent ok when cap RPC on', async (t) => {
|
|
const audit = []
|
|
const bridge = createBareOsDiskOsBridge({
|
|
drive: null,
|
|
bareOsIpc: { list: () => [] },
|
|
ctxApiVersion: BARE_OS_CTX_API_VERSION,
|
|
systemRevision: null,
|
|
bootStartedMs: Date.now(),
|
|
auditBatch: (rows) => {
|
|
audit.push(...rows)
|
|
return rows.length
|
|
}
|
|
})
|
|
const prev = process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC
|
|
process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC = '1'
|
|
try {
|
|
const raw = await bridge.execRpc(
|
|
'bare_os',
|
|
'replication_operator_intent',
|
|
[JSON.stringify({ action: 'pause_hint' })]
|
|
)
|
|
const j = JSON.parse(raw)
|
|
t.is(j.schema, 2)
|
|
t.is(j.ok, true)
|
|
t.is(j.normalizedIntent?.action, 'pause_hint')
|
|
t.is(audit.length, 1)
|
|
t.is(audit[0].kind, 'disk_os.replication_operator_intent')
|
|
t.is(audit[0].intent?.action, 'pause_hint')
|
|
} finally {
|
|
if (prev === undefined) delete process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC
|
|
else process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC = prev
|
|
}
|
|
})
|
|
|
|
test('disk.os replication_operator_intent EINVAL for unknown action', async (t) => {
|
|
const bridge = createBareOsDiskOsBridge({
|
|
drive: null,
|
|
bareOsIpc: { list: () => [] },
|
|
ctxApiVersion: BARE_OS_CTX_API_VERSION,
|
|
systemRevision: null,
|
|
bootStartedMs: Date.now()
|
|
})
|
|
const prev = process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC
|
|
process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC = '1'
|
|
try {
|
|
const raw = await bridge.execRpc(
|
|
'bare_os',
|
|
'replication_operator_intent',
|
|
[JSON.stringify({ action: 'nope' })]
|
|
)
|
|
const j = JSON.parse(raw)
|
|
t.is(j.schema, 2)
|
|
t.is(j.ok, false)
|
|
t.is(j.code, 'EINVAL')
|
|
t.ok(Array.isArray(j.allowedActions))
|
|
} finally {
|
|
if (prev === undefined) delete process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC
|
|
else process.env.BARE_OS_DISK_OS_OPERATOR_INTENT_RPC = prev
|
|
}
|
|
})
|