mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-27 16:49:51 -07:00
test(tokenizer): add golden-file regression corpus with 11 fixtures (#157)
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
|
||||
import { fetchYomitanApi } from './yomitan-api-request.js';
|
||||
|
||||
function createStalledServer(): ReturnType<typeof Bun.serve> {
|
||||
return Bun.serve({
|
||||
hostname: '127.0.0.1',
|
||||
port: 0,
|
||||
fetch: () => new Promise<Response>(() => {}),
|
||||
});
|
||||
}
|
||||
|
||||
test('fetchYomitanApi reports a clear timeout when the bridge stalls', async () => {
|
||||
const server = createStalledServer();
|
||||
|
||||
try {
|
||||
await assert.rejects(
|
||||
() => fetchYomitanApi(`${server.url}tokenize`, { method: 'POST' }, 20),
|
||||
/Yomitan API request timed out after 20ms/,
|
||||
);
|
||||
} finally {
|
||||
server.stop(true);
|
||||
}
|
||||
});
|
||||
|
||||
test('fetchYomitanApi preserves an init cancellation signal', async () => {
|
||||
const server = createStalledServer();
|
||||
const controller = new AbortController();
|
||||
const reason = new Error('cancelled by caller');
|
||||
|
||||
try {
|
||||
const request = fetchYomitanApi(`${server.url}tokenize`, { signal: controller.signal }, 50);
|
||||
controller.abort(reason);
|
||||
await assert.rejects(request, (error) => error === reason);
|
||||
} finally {
|
||||
server.stop(true);
|
||||
}
|
||||
});
|
||||
|
||||
test('fetchYomitanApi preserves a Request input cancellation signal', async () => {
|
||||
const server = createStalledServer();
|
||||
const controller = new AbortController();
|
||||
const reason = new Error('cancelled by request');
|
||||
const input = new Request(`${server.url}tokenize`, { signal: controller.signal });
|
||||
|
||||
try {
|
||||
const request = fetchYomitanApi(input, undefined, 50);
|
||||
controller.abort(reason);
|
||||
await assert.rejects(request, (error) => error === reason);
|
||||
} finally {
|
||||
server.stop(true);
|
||||
}
|
||||
});
|
||||
|
||||
test('fetchYomitanApi accepts a null init cancellation signal', async () => {
|
||||
const server = Bun.serve({
|
||||
hostname: '127.0.0.1',
|
||||
port: 0,
|
||||
fetch: () => new Response('ok'),
|
||||
});
|
||||
|
||||
try {
|
||||
const response = await fetchYomitanApi(`${server.url}tokenize`, { signal: null }, 50);
|
||||
assert.equal(response.status, 200);
|
||||
} finally {
|
||||
server.stop(true);
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user