Files
wehub-resource-sync 9740bc64c9
Firmware QEMU Tests (ADR-061) / QEMU Test (edge-tier1) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (full-adr060) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (tdm-3node) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / Swarm Test (ADR-062) (push) Has been skipped
npm packages / tools/ruview-mcp (node 22) (push) Failing after 1s
nvsim-server → ghcr.io / build-and-publish (push) Failing after 1s
ruview-swarm CI guard / tests (full+train) (push) Failing after 2s
Bench Regression Guard / bench compile-verify (--no-run) (push) Failing after 0s
Bench Regression Guard / bench fast-run (informational, non-gating) (push) Has been skipped
Firmware CI / Verify version.txt matches release tag (push) Has been skipped
Dashboard a11y + cross-browser / a11y (push) Failing after 0s
nvsim Dashboard → GitHub Pages / build-and-deploy (push) Failing after 2s
Firmware CI / Build firmware (esp32s3 / 4mb) (push) Failing after 15s
Firmware QEMU Tests (ADR-061) / Build Espressif QEMU (push) Failing after 1s
Firmware QEMU Tests (ADR-061) / Fuzz Testing (ADR-061 Layer 6) (push) Failing after 1s
Continuous Deployment / Pre-deployment Checks (push) Has been skipped
Firmware CI / Build firmware (esp32c6 / c6-4mb) (push) Failing after 15s
Firmware CI / Build firmware (esp32s3 / 8mb) (push) Failing after 15s
Firmware QEMU Tests (ADR-061) / QEMU Test (boundary-max) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (boundary-min) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (default) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / QEMU Test (edge-tier0) (push) Has been skipped
Firmware QEMU Tests (ADR-061) / NVS Matrix Generation (push) Failing after 1s
Security Scanning / Security Policy Compliance (push) Failing after 0s
Security Scanning / Dependency Vulnerability Scan (push) Failing after 0s
Security Scanning / Static Application Security Testing (push) Failing after 1s
Security Scanning / Infrastructure Security Scan (push) Failing after 1s
Security Scanning / Secret Scanning (push) Failing after 1s
npm packages / harness/ruview (node 22) (push) Failing after 17s
Security Scanning / License Compliance Scan (push) Failing after 1s
Security Scanning / Container Security Scan (push) Failing after 4s
three.js demos → GitHub Pages / build-and-deploy (push) Failing after 1s
Verify Pipeline Determinism / Verify Pipeline Determinism (3.11) (push) Failing after 1s
Fix-Marker Regression Guard / Verify fix markers (push) Failing after 1s
ADR-115 MQTT integration tests / mqtt-integration (push) Failing after 1s
npm packages / harness/ruview (node 20) (push) Failing after 1s
npm packages / tools/ruview-mcp (node 20) (push) Failing after 1s
npm packages / tools/ruview-cli (node 20) (push) Failing after 1s
npm packages / tools/ruview-cli (node 22) (push) Failing after 1s
BFLD MQTT Integration / cargo test --features mqtt (live mosquitto) (push) Failing after 29s
ruview-swarm CI guard / build train_marl bin (push) Failing after 2s
ruview-swarm CI guard / clippy (-D warnings, --no-deps) (push) Failing after 3s
ruview-swarm CI guard / tests (ruflo) (push) Failing after 1s
ruview-swarm CI guard / tests (train) (push) Failing after 2s
ruview-swarm CI guard / tests (default) (push) Failing after 2s
Point Cloud Viewer → GitHub Pages / build-and-deploy (push) Failing after 8s
ruview-swarm CI guard / ITAR / publish guard (push) Failing after 0s
wifi-densepose sensing-server → Docker Hub + ghcr.io / build · push · smoke-test (push) Failing after 1s
Continuous Deployment / Deploy to Production (push) Has been cancelled
Continuous Deployment / Rollback Deployment (push) Has been cancelled
Continuous Deployment / Post-deployment Monitoring (push) Has been cancelled
Continuous Deployment / Notify Deployment Status (push) Has been cancelled
Continuous Deployment / Deploy to Staging (push) Has been cancelled
Security Scanning / Security Report (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:59:54 +08:00

93 lines
3.3 KiB
TypeScript

/**
* Smoke tests for ruview-mcp tool stubs.
*
* These tests run without a live sensing-server or cog binary — they verify
* the tool handler plumbing returns the expected shape under error conditions.
* M6 adds integration tests that spawn a real MCP server and call each tool.
*/
import os from "node:os";
import type { RuviewConfig } from "../src/types.js";
import { csiLatest } from "../src/tools/csi-latest.js";
import { poseInfer } from "../src/tools/pose-infer.js";
import { countInfer } from "../src/tools/count-infer.js";
import { registryList } from "../src/tools/registry-list.js";
import { trainCount } from "../src/tools/train-count.js";
const testConfig: RuviewConfig = {
sensingServerUrl: "http://127.0.0.1:19999", // nothing listening here
apiToken: undefined,
poseCogBinary: "nonexistent-cog-pose-estimation",
countCogBinary: "nonexistent-cog-person-count",
jobsDir: os.tmpdir(),
};
describe("ruview_csi_latest", () => {
it("returns {ok:false, warn:true} when sensing-server is not reachable", async () => {
const result = await csiLatest({}, testConfig) as Record<string, unknown>;
expect(result["ok"]).toBe(false);
expect(result["warn"]).toBe(true);
expect(typeof result["error"]).toBe("string");
});
});
describe("ruview_pose_infer", () => {
it("returns {ok:false, warn:true} when cog binary is not found", async () => {
const result = await poseInfer({}, testConfig) as Record<string, unknown>;
expect(result["ok"]).toBe(false);
expect(result["warn"]).toBe(true);
expect(typeof result["error"]).toBe("string");
});
it("result shape contains expected fields on success (stub)", async () => {
// Point to a real binary that returns exit 0 on any argument (using 'node').
const result = await poseInfer(
{ cog_binary: "node" },
{ ...testConfig, poseCogBinary: "node" }
) as Record<string, unknown>;
// node --help exits 0, so health passes, but output may be unexpected.
// We just verify the response is shaped correctly.
expect(typeof result["ok"]).toBe("boolean");
});
});
describe("ruview_count_infer", () => {
it("returns {ok:false, warn:true} when cog binary is not found", async () => {
const result = await countInfer({ max_persons: 7 }, testConfig) as Record<string, unknown>;
expect(result["ok"]).toBe(false);
expect(result["warn"]).toBe(true);
expect(typeof result["error"]).toBe("string");
});
});
describe("ruview_registry_list", () => {
it("returns {ok:false, warn:true} when sensing-server is not reachable", async () => {
const result = await registryList(
{ refresh: false },
testConfig
) as Record<string, unknown>;
expect(result["ok"]).toBe(false);
expect(result["warn"]).toBe(true);
});
});
describe("ruview_train_count", () => {
it("enqueues a job and returns a UUID job_id", async () => {
const result = await trainCount(
{
paired_jsonl: "/tmp/test.paired.jsonl",
epochs: 1,
learning_rate: 0.001,
},
testConfig
) as Record<string, unknown>;
expect(result["ok"]).toBe(true);
const res = result["result"] as Record<string, unknown>;
expect(typeof res["job_id"]).toBe("string");
// UUID format
expect((res["job_id"] as string).split("-")).toHaveLength(5);
expect(res["status"]).toBe("running");
expect(typeof res["log_path"]).toBe("string");
});
});