feat:移除了弹窗,服务器添加sls
This commit is contained in:
commit
6a295f9a7a
4082 files changed
+1322534
No files matched your search
@@ -0,0 +1,94 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
|
||||
import {
|
||||
compareContentIdentities,
|
||||
contentIdentityFromInput,
|
||||
contentIdentityInputsFromSnapshot,
|
||||
normalizeContentIdentityText,
|
||||
} from './content-identity.ts'
|
||||
|
||||
function identity(
|
||||
provider: 'modrinth' | 'curseforge',
|
||||
projectId: string,
|
||||
contentType = 'mod',
|
||||
values: Record<string, string> = {},
|
||||
) {
|
||||
return contentIdentityFromInput({ provider, projectId, contentType, ...values })
|
||||
}
|
||||
|
||||
test('normalizes platform suffixes and versions', () => {
|
||||
assert.equal(normalizeContentIdentityText('Sodium-Fabric-0.5.8.jar'), 'sodium')
|
||||
assert.equal(normalizeContentIdentityText('sodium_forge_1.20.1'), 'sodium')
|
||||
})
|
||||
|
||||
test('same provider never creates a cross-platform conflict', () => {
|
||||
assert.equal(
|
||||
compareContentIdentities(
|
||||
identity('modrinth', 'a', 'mod', { title: 'Sodium' }),
|
||||
identity('modrinth', 'b', 'mod', { title: 'Sodium' }),
|
||||
),
|
||||
null,
|
||||
)
|
||||
})
|
||||
|
||||
test('different content types never conflict', () => {
|
||||
assert.equal(
|
||||
compareContentIdentities(
|
||||
identity('modrinth', 'a', 'mod', { title: 'Sodium' }),
|
||||
identity('curseforge', 'b', 'resourcepack', { title: 'Sodium' }),
|
||||
),
|
||||
null,
|
||||
)
|
||||
})
|
||||
|
||||
test('matching sha1 is an exact cross-platform conflict', () => {
|
||||
const result = compareContentIdentities(
|
||||
identity('modrinth', 'a', 'mod', { sha1: 'ABC123', title: 'First' }),
|
||||
identity('curseforge', 'b', 'mod', { sha1: 'abc123', title: 'Second' }),
|
||||
)
|
||||
assert.equal(result?.source, 'sha1')
|
||||
assert.equal(result?.confidence, 'exact')
|
||||
})
|
||||
|
||||
test('matching names are heuristic conflicts', () => {
|
||||
const result = compareContentIdentities(
|
||||
identity('modrinth', 'a', 'mod', { title: 'Example Mod' }),
|
||||
identity('curseforge', 'b', 'mod', { title: 'example-mod' }),
|
||||
)
|
||||
assert.equal(result?.source, 'heuristic')
|
||||
})
|
||||
|
||||
test('curated mapping conflicts are exact', () => {
|
||||
const left = { ...identity('modrinth', 'a'), key: 'mapping:1', ambiguous: false }
|
||||
const right = { ...identity('curseforge', 'b'), key: 'mapping:1', ambiguous: false }
|
||||
const result = compareContentIdentities(left, right)
|
||||
assert.equal(result?.source, 'curated_mapping')
|
||||
assert.equal(result?.confidence, 'exact')
|
||||
})
|
||||
|
||||
test('pack-managed snapshot members participate in cross-platform conflicts', () => {
|
||||
const [installedInput] = contentIdentityInputsFromSnapshot(
|
||||
[
|
||||
{
|
||||
projectType: 'mod',
|
||||
provider: 'modrinth',
|
||||
providerProjectId: 'AANobbMI',
|
||||
expectedRelativePath: 'mods/sodium-fabric-0.6.13.jar',
|
||||
content: null,
|
||||
},
|
||||
],
|
||||
{
|
||||
modrinth: new Map([['AANobbMI', { slug: 'sodium', title: 'Sodium' }]]),
|
||||
},
|
||||
)
|
||||
const installed = { ...contentIdentityFromInput(installedInput), key: 'mapping:sodium' }
|
||||
const candidate = {
|
||||
...identity('curseforge', '394468', 'mod', { slug: 'sodium' }),
|
||||
key: 'mapping:sodium',
|
||||
}
|
||||
|
||||
const result = compareContentIdentities(candidate, installed)
|
||||
assert.equal(result?.source, 'curated_mapping')
|
||||
assert.equal(result?.confidence, 'exact')
|
||||
})
|
||||
Reference in new issue
Block a user