mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-16 01:03:42 +08:00
Keep every post-59948b5 change inside verification/. The verifier owns its npm working directory and sanitized Docker context, so no release metadata or root Docker configuration is modified.
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import { execFile } from 'node:child_process';
|
|
import { mkdtemp, readFile, writeFile } from 'node:fs/promises';
|
|
import { tmpdir } from 'node:os';
|
|
import path from 'node:path';
|
|
import { promisify } from 'node:util';
|
|
import test from 'node:test';
|
|
|
|
// GH-ISSUE: 62,79,86,104,119,144,147,152,199,217; GH-PR: 139
|
|
|
|
const execFileAsync = promisify(execFile);
|
|
|
|
test('client asset transpilation removes modern syntax for Android 9 WebView (Chrome 69)', async () => {
|
|
const tempDir = await mkdtemp(path.join(tmpdir(), 'kvideo-webview69-'));
|
|
const assetPath = path.join(tempDir, 'chunk.js');
|
|
|
|
await writeFile(
|
|
assetPath,
|
|
[
|
|
'let count = null;',
|
|
'let fallback = 0;',
|
|
'let enabled = true;',
|
|
'const nested = globalThis.__input?.value ?? "fallback";',
|
|
'count ??= 1;',
|
|
'fallback ||= 2;',
|
|
'enabled &&= false;',
|
|
'globalThis.__kvideoWebView69Result = { count, fallback, enabled, nested };',
|
|
].join('\n')
|
|
);
|
|
|
|
await execFileAsync(process.execPath, [
|
|
path.resolve('scripts/transpile-client-assets.mjs'),
|
|
tempDir,
|
|
]);
|
|
|
|
const output = await readFile(assetPath, 'utf8');
|
|
|
|
assert.equal(output.includes('??='), false);
|
|
assert.equal(output.includes('||='), false);
|
|
assert.equal(output.includes('&&='), false);
|
|
// chrome83 still emits bare `??` in app code; chrome69 must rewrite it.
|
|
// (Polyfill feature-detect regexes like `/()??/` may still contain the characters.)
|
|
assert.equal(output.includes('nested'), true);
|
|
assert.equal(/\?\?\s*"fallback"|\?\?\s*'fallback'/.test(output), false);
|
|
assert.equal(output.includes('?.'), false);
|
|
});
|