import assert from 'node:assert/strict' import { access, readFile } from 'node:fs/promises' import { createSpine38ImportOptions, prepareSpine38SkeletonJson } from '../connector/spine38-project.mjs' import { createConversionWorkspace } from '../connector/spine-workspace.mjs' const source = { skeleton: { spine: '3.8', images: './images/', fps: 30 }, bones: [{ name: 'root' }], slots: [], skins: { default: {} }, animations: { animation: {} }, } const prepared = JSON.parse(prepareSpine38SkeletonJson(source, 'images')) assert.equal(prepared.skeleton.images, 'images') assert.equal(source.skeleton.images, './images/') const workspace = await createConversionWorkspace({ schemaVersion: 1, projectName: 'Spine38PathTest', spineVersion: '3.8', skeletonJson: JSON.stringify(source), images: [], }) try { const written = JSON.parse(await readFile(workspace.inputPath, 'utf8')) assert.equal(written.skeleton.images, 'images') await access(`${workspace.root}/images`) const invocation = createSpine38ImportOptions({ workspaceRoot: workspace.root, inputPath: workspace.inputPath, outputPath: workspace.outputPath, }) assert.equal(invocation.cwd, workspace.root) assert.equal(invocation.inputPath, 'Spine38PathTest.json') assert.equal(invocation.outputPath, 'Spine38PathTest.spine') console.log('Spine 3.8 图片路径预处理与相对路径导入检查通过') } finally { await workspace.cleanup() }