From a80df869a92c330fbad9695057720b11a18af901 Mon Sep 17 00:00:00 2001 From: Doan Luu Duc Tai Date: Sat, 31 Oct 2026 13:08:08 -0500 Subject: Forbid Rust lints and enforce strict typed TypeScript linting --- crates/chat-server/tests/progress.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'crates/chat-server/tests/progress.ts') diff --git a/crates/chat-server/tests/progress.ts b/crates/chat-server/tests/progress.ts index 59c939d..610488c 100644 --- a/crates/chat-server/tests/progress.ts +++ b/crates/chat-server/tests/progress.ts @@ -14,12 +14,12 @@ // along with this program. If not, see . import assert from 'node:assert/strict'; -import { createServer, type ServerResponse } from 'node:http'; +import type { ServerResponse } from 'node:http'; import { readFile, writeFile, mkdir, mkdtemp, rm } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join, resolve } from 'node:path'; import { chromium, firefox, type BrowserContext, type Page } from 'playwright'; -import { libreJSAddon, required, serverOrigin } from '../../../tests/browser-support.js'; +import { asyncServer, libreJSAddon, required, serverOrigin } from '../../../tests/browser-support.js'; const libre = process.env['CHAT_LIBREJS'] === '1'; const profile = await mkdtemp(join(tmpdir(),'stack-chat-progress-')); @@ -31,7 +31,7 @@ let configReady: Promise | undefined; let signalConfig: (() => void) | undefined; let origin = ''; const errors: string[] = []; -const server = createServer(async (request,response) => { +const server = asyncServer(async (request,response) => { response.setHeader('Cache-Control','no-store'); if (request.url === '/crypto.wasm') { if (mode === 'failure') { response.writeHead(503); response.end(); return; } @@ -43,9 +43,9 @@ const server = createServer(async (request,response) => { } if (request.url === '/api') { configuration = response; required(signalConfig, 'Missing configuration signal')(); return; } const assets: Record = { '/':'crates/chat-server/web/index.html','/app.js':'var/build/typescript/crates/chat-server/web/app.js','/style.css':'crates/chat-server/web/style.css' }; - const path = assets[request.url || '']; - if (!path) { response.writeHead(404); response.end(); return; } - const mime = request.url === '/' ? 'text/html' : request.url?.endsWith('.js') ? 'text/javascript' : 'text/css'; + const path = assets[(request.url ?? '')]; + if (path === undefined || path.length === 0) { response.writeHead(404); response.end(); return; } + const mime = request.url === '/' ? 'text/html' : (request.url?.endsWith('.js') === true) ? 'text/javascript' : 'text/css'; response.setHeader('Content-Type',mime); let source = await readFile(resolve(path),'utf8'); if (request.url === '/') source = source.replaceAll('{{SITE_ORIGIN}}',origin); @@ -60,12 +60,12 @@ if (libre) { const addon = await readFile(resolve('.tools/librejs.xpi')); await writeFile(join(profile,'extensions','jid1-KtlZuoiikVfFew@jetpack.xpi'),addon); context = await firefox.launchPersistentContext(profile,{headless:true,firefoxUserPrefs:{'extensions.autoDisableScopes':0,'extensions.enabledScopes':15,'extensions.startupScanScopes':15,'extensions.update.enabled':false}}); - browser = {close:() => context.close()}; + browser = {close:(): Promise => context.close()}; } else { browser = await chromium.launch({headless:true,channel:'chromium'}); context = await browser.newContext(); } -async function open(selected: 'known' | 'unknown' | 'failure') { +async function open(selected: 'known' | 'unknown' | 'failure'): Promise { mode = selected; configuration = undefined; configReady = new Promise(done => { signalConfig = done; }); @@ -75,11 +75,11 @@ async function open(selected: 'known' | 'unknown' | 'failure') { await page.goto(origin); return page; } -async function waitStatus(page: Page, part: string) { - await page.waitForFunction(value => document.getElementById('status')?.textContent?.includes(value),part); - return await page.locator('#status').textContent() || ''; +async function waitStatus(page: Page, part: string): Promise { + await page.waitForFunction(value => document.getElementById('status')?.textContent.includes(value),part); + return (await page.locator('#status').textContent() ?? ''); } -async function complete(page: Page, offset: number) { +async function complete(page: Page, offset: number): Promise { required(transfer, 'Missing transfer').end(bytes.subarray(offset)); await waitStatus(page,'Connecting to chat'); await configReady; @@ -98,7 +98,7 @@ try { assert.match(await waitStatus(known,'2.0 /'),/39%/); await known.screenshot({path:resolve('.tools/chat-download-progress.png'),fullPage:true}); await known.clock.fastForward(44000); - assert.ok(!(await known.locator('#status').textContent() || '').includes('stalled')); + assert.ok(!((await known.locator('#status').textContent() ?? '')).includes('stalled')); await complete(known,2097152); const unknown = await open('unknown'); assert.equal(await waitStatus(unknown,'1.0 MiB received'),'Downloading cryptographic module... 1.0 MiB received'); @@ -111,7 +111,7 @@ try { await waitStatus(stalled,'1.0 /'); await stalled.clock.fastForward(45001); await waitStatus(stalled,'stalled for 45 seconds'); - assert.match(await stalled.locator('#status').textContent() || '',/reload/); + assert.match((await stalled.locator('#status').textContent() ?? ''),/reload/); assert.equal(await stalled.locator('#owner-choice').isVisible(),false); await stalled.close(); assert.deepEqual(errors,[]); -- cgit v1.2.3