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

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Jina AI
Jina AI
C
Check Point Blog
V
V2EX
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
A
About on SuperTechFans
D
DataBreaches.Net
腾讯CDC
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
IT之家
IT之家
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
博客园_首页
T
Tailwind CSS Blog
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

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: avoid extension count filter predicates · openclaw/...
steipete · 2026-05-09 · via Recent Commits to openclaw:main
Original file line numberDiff line numberDiff line change

@@ -393,9 +393,7 @@ describe("Codex plugin thread config", () => {

393393

});

394394

expect(config.diagnostics).toEqual([]);

395395

expect(request.mock.calls.map(([method]) => method)).toContain("plugin/install");

396-

expect(request.mock.calls.filter(([method]) => method === "app/list").length).toBeGreaterThan(

397-

0,

398-

);

396+

expect(request.mock.calls.some(([method]) => method === "app/list")).toBe(true);

399397

expect(appListParams.map((params) => params.forceRefetch)).toContain(true);

400398

});

401399
Original file line numberDiff line numberDiff line change

@@ -46,6 +46,16 @@ const mockReaddirSync = vi.fn();

4646

const mockSettingsExistsSync = vi.fn();

4747

const mockSettingsReadFileSync = vi.fn();

4848
49+

function countMatching<T>(items: readonly T[], predicate: (item: T) => boolean): number {

50+

let count = 0;

51+

for (const item of items) {

52+

if (predicate(item)) {

53+

count += 1;

54+

}

55+

}

56+

return count;

57+

}

58+
4959

describe("resolveGeminiCliSelectedAuthType", () => {

5060

const ENV_KEYS = ["GOOGLE_GENAI_USE_GCA"] as const;

5161

@@ -843,7 +853,7 @@ describe("loginGeminiCliOAuth", () => {

843853

});

844854
845855

await runProjectDiscoveryExpectingProjectId("env-project");

846-

expect(requests.filter(({ url }) => url.includes("v1internal:loadCodeAssist"))).toHaveLength(3);

856+

expect(countMatching(requests, ({ url }) => url.includes("v1internal:loadCodeAssist"))).toBe(3);

847857

expect(requests.map(({ url }) => url)).not.toEqual(

848858

expect.arrayContaining([expect.stringContaining("v1internal:onboardUser")]),

849859

);

Original file line numberDiff line numberDiff line change

@@ -128,7 +128,9 @@ describe("syncMemoryWikiBridgeSources", () => {

128128

expect(first.pagePaths).toHaveLength(3);

129129
130130

const sourcePages = await fs.readdir(path.join(vaultDir, "sources"));

131-

expect(sourcePages.filter((name) => name.startsWith("bridge-"))).toHaveLength(3);

131+

expect(

132+

sourcePages.reduce((count, name) => count + (name.startsWith("bridge-") ? 1 : 0), 0),

133+

).toBe(3);

132134
133135

const memoryPage = await fs.readFile(path.join(vaultDir, first.pagePaths[0] ?? ""), "utf8");

134136

expect(memoryPage).toContain("sourceType: memory-bridge");

Original file line numberDiff line numberDiff line change

@@ -45,6 +45,16 @@ function createContainerNetworkRunCommand(calls?: string[]) {

4545

};

4646

}

4747
48+

function countMatching<T>(items: readonly T[], predicate: (item: T) => boolean): number {

49+

let count = 0;

50+

for (const item of items) {

51+

if (predicate(item)) {

52+

count += 1;

53+

}

54+

}

55+

return count;

56+

}

57+
4858

describe("matrix harness runtime", () => {

4959

it("writes a pinned Tuwunel compose file and redacted manifest", async () => {

5060

const outputDir = await mkdtemp(path.join(os.tmpdir(), "matrix-qa-harness-"));

@@ -180,7 +190,7 @@ describe("matrix harness runtime", () => {

180190

return {

181191

ok:

182192

input === "http://127.0.0.1:28008/_matrix/client/versions" &&

183-

fetchCalls.filter((url) => url === input).length > 1,

193+

countMatching(fetchCalls, (url) => url === input) > 1,

184194

};

185195

}),

186196

sleepImpl: vi.fn(async () => {}),

@@ -208,7 +218,7 @@ describe("matrix harness runtime", () => {

208218

return {

209219

ok:

210220

input === "http://172.18.0.10:8008/_matrix/client/versions" &&

211-

fetchCalls.filter((url) => url === input).length > 1,

221+

countMatching(fetchCalls, (url) => url === input) > 1,

212222

};

213223

}),

214224

sleepImpl: vi.fn(async () => {}),

Original file line numberDiff line numberDiff line change

@@ -16,6 +16,16 @@ type TestLog = {

1616

error: (...args: unknown[]) => void;

1717

};

1818
19+

function countMatching<T>(items: readonly T[], predicate: (item: T) => boolean): number {

20+

let count = 0;

21+

for (const item of items) {

22+

if (predicate(item)) {

23+

count += 1;

24+

}

25+

}

26+

return count;

27+

}

28+
1929

function makeAccount(

2030

overrides: Partial<ResolvedSynologyChatAccount> = {},

2131

): ResolvedSynologyChatAccount {

@@ -240,8 +250,8 @@ describe("createWebhookHandler", () => {

240250

await new Promise((resolve) => setTimeout(resolve, 0));

241251
242252

// Default maxInFlightPerKey is 8; 12 total requests leaves 4 rejected with 429.

243-

expect(responses.filter((res) => res._status === 0)).toHaveLength(8);

244-

expect(responses.filter((res) => res._status === 429)).toHaveLength(4);

253+

expect(countMatching(responses, (res) => res._status === 0)).toBe(8);

254+

expect(countMatching(responses, (res) => res._status === 429)).toBe(4);

245255
246256

for (const req of requests) {

247257

req.emit("end");