惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
Recent Announcements
Recent Announcements
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
J
Java Code Geeks
博客园_首页
Jina AI
Jina AI
美团技术团队
H
Help Net Security
MyScale Blog
MyScale Blog
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
S
SegmentFault 最新的问题

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
test: tighten matrix setup assertions · openclaw/openclaw...
steipete · 2026-05-11 · via Recent Commits to openclaw:main

@@ -15,8 +15,18 @@ function applyOpsAccountConfig(cfg: CoreConfig): CoreConfig {

1515

}) as CoreConfig;

1616

}

171718+

function expectFields(value: unknown, expected: Record<string, unknown>): void {

19+

if (value === undefined || value === null || typeof value !== "object" || Array.isArray(value)) {

20+

throw new Error("expected object with fields");

21+

}

22+

const record = value as Record<string, unknown>;

23+

Object.entries(expected).forEach(([key, expectedValue]) => {

24+

expect(record[key]).toEqual(expectedValue);

25+

});

26+

}

27+1828

function expectPromotedDefaultAccount(next: CoreConfig): void {

19-

expect(next.channels?.matrix?.accounts?.Default).toMatchObject({

29+

expectFields(next.channels?.matrix?.accounts?.Default, {

2030

enabled: true,

2131

deviceName: "Legacy raw key",

2232

homeserver: "https://matrix.example.org",

@@ -28,7 +38,7 @@ function expectPromotedDefaultAccount(next: CoreConfig): void {

2838

}

29393040

function expectOpsAccount(next: CoreConfig): void {

31-

expect(next.channels?.matrix?.accounts?.ops).toMatchObject({

41+

expectFields(next.channels?.matrix?.accounts?.ops, {

3242

name: "Ops",

3343

enabled: true,

3444

homeserver: "https://matrix.example.org",

@@ -125,7 +135,7 @@ describe("createMatrixSetupWizardProxy", () => {

125135

expect(proxy.dmPolicy?.getCurrent(cfg, "ops")).toBe("pairing");

126136

const next = proxy.dmPolicy?.setPolicy(cfg, "open", "ops") as CoreConfig;

127137128-

expect(next.channels?.matrix?.accounts?.ops?.dm).toMatchObject({

138+

expectFields(next.channels?.matrix?.accounts?.ops?.dm, {

129139

policy: "open",

130140

allowFrom: ["@ops:example.org", "*"],

131141

});

@@ -160,7 +170,7 @@ describe("createMatrixSetupWizardProxy", () => {

160170161171

const next = proxy.dmPolicy?.setPolicy(cfg, "allowlist", "ops") as CoreConfig;

162172163-

expect(next.channels?.matrix?.accounts?.ops?.dm).toMatchObject({

173+

expectFields(next.channels?.matrix?.accounts?.ops?.dm, {

164174

policy: "allowlist",

165175

allowFrom: ["@ops:example.org"],

166176

});

@@ -195,13 +205,13 @@ describe("matrixSetupAdapter", () => {

195205

expect(next.channels?.matrix?.homeserver).toBeUndefined();

196206

expect(next.channels?.matrix?.userId).toBeUndefined();

197207

expect(next.channels?.matrix?.accessToken).toBeUndefined();

198-

expect(next.channels?.matrix?.accounts?.default).toMatchObject({

208+

expectFields(next.channels?.matrix?.accounts?.default, {

199209

homeserver: "https://matrix.example.org",

200210

userId: "@default:example.org",

201211

accessToken: "default-token",

202212

deviceName: "Default device",

203213

});

204-

expect(next.channels?.matrix?.accounts?.ops).toMatchObject({

214+

expectFields(next.channels?.matrix?.accounts?.ops, {

205215

name: "Ops",

206216

enabled: true,

207217

homeserver: "https://matrix.example.org",

@@ -260,7 +270,7 @@ describe("matrixSetupAdapter", () => {

260270

const next = applyOpsAccountConfig(cfg);

261271262272

expectPromotedDefaultAccount(next);

263-

expect(next.channels?.matrix?.accounts?.support).toMatchObject({

273+

expectFields(next.channels?.matrix?.accounts?.support, {

264274

homeserver: "https://matrix.example.org",

265275

accessToken: "support-token",

266276

});

@@ -296,7 +306,7 @@ describe("matrixSetupAdapter", () => {

296306

},

297307

}) as CoreConfig;

298308299-

expect(next.channels?.matrix?.accounts?.ops).toMatchObject({

309+

expectFields(next.channels?.matrix?.accounts?.ops, {

300310

name: "Ops",

301311

enabled: true,

302312

});

@@ -334,7 +344,7 @@ describe("matrixSetupAdapter", () => {

334344

},

335345

}) as CoreConfig;

336346337-

expect(next.channels?.matrix?.accounts?.ops).toMatchObject({

347+

expectFields(next.channels?.matrix?.accounts?.ops, {

338348

name: "Ops",

339349

enabled: true,

340350

avatarUrl: "mxc://example.org/ops-avatar",

@@ -354,7 +364,7 @@ describe("matrixSetupAdapter", () => {

354364

},

355365

}) as CoreConfig;

356366357-

expect(next.channels?.matrix?.accounts?.ops).toMatchObject({

367+

expectFields(next.channels?.matrix?.accounts?.ops, {

358368

enabled: true,

359369

homeserver: "https://matrix.example.org",

360370

accessToken: "ops-token",

@@ -373,7 +383,7 @@ describe("matrixSetupAdapter", () => {

373383

},

374384

}) as CoreConfig;

375385376-

expect(next.channels?.matrix?.accounts?.ops).toMatchObject({

386+

expectFields(next.channels?.matrix?.accounts?.ops, {

377387

enabled: true,

378388

homeserver: "https://matrix.example.org",

379389

accessToken: "ops-token",

@@ -406,7 +416,7 @@ describe("matrixSetupAdapter", () => {

406416

},

407417

}) as CoreConfig;

408418409-

expect(next.channels?.matrix?.accounts?.ops).toMatchObject({

419+

expectFields(next.channels?.matrix?.accounts?.ops, {

410420

enabled: true,

411421

homeserver: "http://matrix.internal:8008",

412422

accessToken: "ops-token",

@@ -447,7 +457,7 @@ describe("matrixSetupAdapter", () => {

447457

}) as CoreConfig;

448458449459

expect(next.channels?.matrix?.blockStreaming).toBe(true);

450-

expect(next.channels?.matrix?.accounts?.ops).toMatchObject({

460+

expectFields(next.channels?.matrix?.accounts?.ops, {

451461

name: "Ops",

452462

enabled: true,

453463

homeserver: "https://matrix.example.org",