mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-23 22:01:20 -08:00
test(types): [PKG-FACTORY-01] checkpoint historical factory compatibility choices
This commit is contained in:
1 parent
ef976136a1
commit
1f93bb9ba1
9 files changed
+870
-7
No files matched your search
@@ -0,0 +1,34 @@
|
||||
import assert from 'node:assert/strict'
|
||||
// eslint-disable-next-line test/no-import-node-test -- Node compatibility runner.
|
||||
import test from 'node:test'
|
||||
import ts from 'typescript'
|
||||
import compat from 'typescript-compat'
|
||||
import { consumer, declaration, diagnostics, evaluateFactoryProposals, packages } from './factory-assignability.mjs'
|
||||
|
||||
test('Factory compatibility proposals retain exact published controls and expose conflicting CommonJS shapes', async () => {
|
||||
const records = await evaluateFactoryProposals()
|
||||
assert.equal(records.length, 72)
|
||||
for (const item of records) {
|
||||
const expected = {
|
||||
'published-1.0.0': { 'factory-replacement': [], 'require-call': [], 'require-default': [2339] },
|
||||
'published-1.1.0': { 'factory-replacement': [], 'require-call': [2349], 'require-default': [] },
|
||||
'required-default': { 'factory-replacement': [2741], 'require-call': [], 'require-default': [] },
|
||||
'optional-default': { 'factory-replacement': [], 'require-call': [], 'require-default': [2722] },
|
||||
'latest-default': { 'factory-replacement': [], 'require-call': [2349], 'require-default': [] },
|
||||
'callable-export-equals': { 'factory-replacement': [], 'require-call': [], 'require-default': [2339] },
|
||||
}[item.shape][item.usage]
|
||||
assert.deepEqual(item.diagnostics.map(diagnostic => diagnostic.code), expected, `${item.name} ${item.compiler} ${item.shape} ${item.usage}`)
|
||||
}
|
||||
})
|
||||
|
||||
test('Adding an optional overload breaks replacement factories even without a default property', () => {
|
||||
const pkg = packages[1]
|
||||
const optionalOverload = declaration(pkg, 'latest-default').replace(
|
||||
'declare const plugin: Callable;',
|
||||
'interface RuntimeCallable { (option?: Option): (art: Artplayer) => Result; (option: Option): (art: Artplayer) => Result } declare const plugin: RuntimeCallable;',
|
||||
)
|
||||
for (const compiler of [ts, compat]) {
|
||||
assert.deepEqual(diagnostics(compiler, consumer(pkg, 'factory-replacement'), declaration(pkg, 'latest-default')), [])
|
||||
assert.deepEqual(diagnostics(compiler, consumer(pkg, 'factory-replacement'), optionalOverload).map(item => item.code), [2322])
|
||||
}
|
||||
})
|
||||
Reference in new issue
Block a user