Files
ArtPlayer/test/helpers/jassub-assets.js

28 lines
1.8 KiB
JavaScript

import assert from 'node:assert/strict'
import fs from 'node:fs'
import path from 'node:path'
import { hash } from '../../refactor/scripts/releases.mjs'
import { verifyInstalledArtifacts } from '../../scripts/installed-artifacts.mjs'
export function jassubAssets(root, mapFile) {
const name = 'artplayer-plugin-jassub'
const baseline = JSON.parse(fs.readFileSync(path.join(root, 'refactor/baselines/jassub-release.json'), 'utf8'))
const installed = mapFile ? verifyInstalledArtifacts(root, mapFile, ['artplayer', 'artplayer-plugin-chapter', name]) : null
const input = installed?.inputs.find(item => item.name === name)
const pkg = installed?.packages.find(item => item.name === name)
return ['jassub-worker.js', 'jassub-worker.wasm', 'jassub-worker-modern.wasm', 'default.woff2'].map((filename) => {
const worker = filename !== 'default.woff2'
const relative = worker ? `packages/${name}/worker/${filename}` : `docs/assets/jassub/${filename}`
const expected = baseline.assets.find(item => item.file === relative)
assert(expected, `Missing JASSUB resource baseline: ${relative}`)
const member = `package/worker/${filename}`
const file = input && worker ? path.resolve(path.dirname(input.file), '../worker', filename) : path.join(root, relative)
const bytes = fs.readFileSync(file)
const sha256 = hash(bytes)
assert.equal(sha256, expected.sha256, `JASSUB resource differs from baseline: ${relative}`)
if (input && worker)
assert.equal(sha256, pkg.files[member], `Installed JASSUB resource differs from archive: ${member}`)
return { route: `/assets/jassub/${filename}`, bytes, source: { kind: input && worker ? 'installed-resource' : 'local-resource', file, sha256, baseline: relative, member: input && worker ? member : null, archiveSha256: input && worker ? input.archiveSha256 : null } }
})
}