clusterflux-public/scripts/sdk-spawn-runtime-smoke.js
Clusterflux release a6b866e279 Public release release-5792a1a4e1cb
Source commit: 5792a1a4e1cb24ff71b1535d4b582ef980880752

Public tree identity: sha256:eea1f740446827ef10e4892923c13f13077c9e03438f2bf53d7f90536fb4cf95
2026-07-17 03:20:45 +02:00

48 lines
1.6 KiB
JavaScript
Executable file

#!/usr/bin/env node
const assert = require("assert");
const cp = require("child_process");
const fs = require("fs");
const path = require("path");
const repo = path.resolve(__dirname, "..");
const sdk = fs.readFileSync(path.join(repo, "crates/clusterflux-sdk/src/lib.rs"), "utf8");
const productRuntime = fs.readFileSync(
path.join(repo, "crates/clusterflux-sdk/src/sdk_runtime.rs"),
"utf8"
);
assert.match(sdk, /pub struct RuntimeSpawnEvent/);
assert.match(sdk, /pub debugger_visible: bool/);
assert.match(sdk, /fn register_runtime_thread/);
assert.match(sdk, /register_runtime_thread\(id, self\.name, self\.env\)/);
assert.match(sdk, /pub fn debugger_visible\(&self\) -> bool/);
assert.match(sdk, /ProductRuntimeConfig::from_env\(\)/);
assert.match(sdk, /start_remote_task\(\s*config,\s*task_id/);
assert.match(sdk, /start_guest_host_task/);
assert.match(sdk, /join_remote_task\(remote\)/);
assert.doesNotMatch(productRuntime, /"type": "launch_task"/);
assert.match(productRuntime, /native SDK task spawning requires coordinator EntrypointV1 execution/);
assert.match(productRuntime, /task_start_v1/);
assert.match(productRuntime, /task_join_v1/);
assert.match(productRuntime, /command_run_v1/);
assert.match(productRuntime, /remote_completion_observed/);
assert.match(productRuntime, /TaskJoinState::Pending/);
assert.doesNotMatch(
productRuntime,
/entry\s*\(/,
"product runtime must not invoke the submitted local Rust closure"
);
cp.execFileSync(
"cargo",
[
"test",
"-p",
"clusterflux-sdk",
"spawn_task_start_registers_debugger_visible_runtime_thread",
],
{ cwd: repo, stdio: "inherit" }
);
console.log("SDK spawn runtime smoke passed");