


























@@ -25,6 +25,7 @@ import {
2525buildFullSuiteVitestRunPlans,
2626createVitestRunSpecs,
2727listFullExtensionVitestProjectConfigs,
28+orderFullSuiteSpecsForParallelRun,
2829parseTestProjectsArgs,
2930resolveParallelFullSuiteConcurrency,
3031resolveChangedTargetArgs,
@@ -38,70 +39,6 @@ import {
3839let releaseLock = () => {};
3940let lockReleased = false;
404141-const FULL_SUITE_CONFIG_WEIGHT = new Map([
42-["test/vitest/vitest.gateway.config.ts", 180],
43-["test/vitest/vitest.gateway-server.config.ts", 180],
44-["test/vitest/vitest.gateway-core.config.ts", 179],
45-["test/vitest/vitest.gateway-client.config.ts", 178],
46-["test/vitest/vitest.gateway-methods.config.ts", 177],
47-["test/vitest/vitest.commands.config.ts", 175],
48-["test/vitest/vitest.agents-core.config.ts", 170],
49-["test/vitest/vitest.agents-pi-embedded.config.ts", 169],
50-["test/vitest/vitest.agents-support.config.ts", 168],
51-["test/vitest/vitest.agents-tools.config.ts", 167],
52-["test/vitest/vitest.extension-voice-call.config.ts", 169],
53-["test/vitest/vitest.extensions.config.ts", 168],
54-["test/vitest/vitest.extension-provider-openai.config.ts", 167],
55-["test/vitest/vitest.runtime-config.config.ts", 166],
56-["test/vitest/vitest.contracts-channel-config.config.ts", 85],
57-["test/vitest/vitest.contracts-channel-surface.config.ts", 60],
58-["test/vitest/vitest.contracts-channel-session.config.ts", 50],
59-["test/vitest/vitest.contracts-channel-registry.config.ts", 35],
60-["test/vitest/vitest.contracts-plugin.config.ts", 20],
61-["test/vitest/vitest.tasks.config.ts", 165],
62-["test/vitest/vitest.channels.config.ts", 164],
63-["test/vitest/vitest.unit-fast.config.ts", 160],
64-["test/vitest/vitest.auto-reply-reply.config.ts", 155],
65-["test/vitest/vitest.infra.config.ts", 145],
66-["test/vitest/vitest.secrets.config.ts", 140],
67-["test/vitest/vitest.cron.config.ts", 135],
68-["test/vitest/vitest.wizard.config.ts", 130],
69-["test/vitest/vitest.unit-src.config.ts", 125],
70-["test/vitest/vitest.extension-matrix.config.ts", 100],
71-["test/vitest/vitest.extension-discord.config.ts", 98],
72-["test/vitest/vitest.extension-providers.config.ts", 96],
73-["test/vitest/vitest.extension-telegram.config.ts", 94],
74-["test/vitest/vitest.extension-whatsapp.config.ts", 92],
75-["test/vitest/vitest.auto-reply-core.config.ts", 90],
76-["test/vitest/vitest.cli.config.ts", 86],
77-["test/vitest/vitest.media.config.ts", 84],
78-["test/vitest/vitest.plugins.config.ts", 82],
79-["test/vitest/vitest.bundled.config.ts", 80],
80-["test/vitest/vitest.extension-slack.config.ts", 78],
81-["test/vitest/vitest.commands-light.config.ts", 48],
82-["test/vitest/vitest.plugin-sdk.config.ts", 46],
83-["test/vitest/vitest.auto-reply-top-level.config.ts", 45],
84-["test/vitest/vitest.unit-ui.config.ts", 40],
85-["test/vitest/vitest.plugin-sdk-light.config.ts", 38],
86-["test/vitest/vitest.daemon.config.ts", 36],
87-["test/vitest/vitest.boundary.config.ts", 34],
88-["test/vitest/vitest.tooling.config.ts", 32],
89-["test/vitest/vitest.unit-security.config.ts", 30],
90-["test/vitest/vitest.unit-support.config.ts", 28],
91-["test/vitest/vitest.extension-zalo.config.ts", 24],
92-["test/vitest/vitest.extension-bluebubbles.config.ts", 22],
93-["test/vitest/vitest.extension-irc.config.ts", 20],
94-["test/vitest/vitest.extension-feishu.config.ts", 18],
95-["test/vitest/vitest.extension-mattermost.config.ts", 16],
96-["test/vitest/vitest.extension-messaging.config.ts", 14],
97-["test/vitest/vitest.extension-imessage.config.ts", 13],
98-["test/vitest/vitest.extension-line.config.ts", 12],
99-["test/vitest/vitest.extension-signal.config.ts", 11],
100-["test/vitest/vitest.extension-acpx.config.ts", 10],
101-["test/vitest/vitest.extension-diffs.config.ts", 8],
102-["test/vitest/vitest.extension-memory.config.ts", 6],
103-["test/vitest/vitest.extension-msteams.config.ts", 4],
104-]);
10542const releaseLockOnce = () => {
10643if (lockReleased) {
10744return;
@@ -198,39 +135,6 @@ async function runLoggedVitestSpec(spec) {
198135};
199136}
200137201-function resolveConfigSortWeight(config, shardTimings) {
202-return shardTimings.get(config) ?? (FULL_SUITE_CONFIG_WEIGHT.get(config) ?? 0) * 1000;
203-}
204-205-function interleaveSlowAndFastSpecs(sortedSpecs) {
206-const ordered = [];
207-let slowIndex = 0;
208-let fastIndex = sortedSpecs.length - 1;
209-while (slowIndex <= fastIndex) {
210-ordered.push(sortedSpecs[slowIndex]);
211-slowIndex += 1;
212-if (slowIndex <= fastIndex) {
213-ordered.push(sortedSpecs[fastIndex]);
214-fastIndex -= 1;
215-}
216-}
217-return ordered;
218-}
219-220-function orderFullSuiteSpecsForParallelRun(specs, shardTimings = new Map()) {
221-const hasMatchingShardTiming = specs.some((spec) => shardTimings.has(spec.config));
222-const sortedSpecs = specs.toSorted((a, b) => {
223-const weightDelta =
224-resolveConfigSortWeight(b.config, shardTimings) -
225-resolveConfigSortWeight(a.config, shardTimings);
226-if (weightDelta !== 0) {
227-return weightDelta;
228-}
229-return a.config.localeCompare(b.config);
230-});
231-return hasMatchingShardTiming ? interleaveSlowAndFastSpecs(sortedSpecs) : sortedSpecs;
232-}
233-234138function isFullExtensionsProjectRun(specs) {
235139const fullExtensionProjectConfigs = new Set(listFullExtensionVitestProjectConfigs());
236140return (
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。