refactor: restore pre-v1 runtime follow-up flow

This commit is contained in:
Eyejoker
2026-03-23 05:54:48 +09:00
parent 77a7918063
commit 2c37103243
3 changed files with 178 additions and 35 deletions

View File

@@ -1,4 +1,5 @@
import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
import fs from 'fs';
import { GroupQueue } from './group-queue.js';
@@ -62,6 +63,32 @@ describe('GroupQueue', () => {
expect(maxConcurrent).toBe(1);
});
it('pipes follow-up messages to an active non-task process', async () => {
let releaseRun!: (value: boolean) => void;
const blocker = new Promise<boolean>((resolve) => {
releaseRun = resolve;
});
const processMessages = vi.fn(
async () => await blocker,
);
queue.setProcessMessagesFn(processMessages);
queue.enqueueMessageCheck('group1@g.us', 'group-folder');
await vi.advanceTimersByTimeAsync(10);
expect(queue.sendMessage('group1@g.us', '후속 메시지')).toBe(true);
expect(fs.mkdirSync).toHaveBeenCalledWith(
'/tmp/ejclaw-test-data/ipc/group-folder/input',
{ recursive: true },
);
expect(fs.writeFileSync).toHaveBeenCalled();
expect(fs.renameSync).toHaveBeenCalled();
releaseRun(true);
await vi.advanceTimersByTimeAsync(10);
});
// --- Global concurrency limit ---
it('respects global concurrency limit', async () => {