mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-24 14:45:36 +00:00
## Summary Adds tests for metadata parsers ## Changes - **What**: - add test file generation script - identified & fixed bug in webp exif parsing over-reading - identified & fix bug in mp3/ogg parser where it would read from a fixed position instead of relative, causing incorrect reads throwing RangeError - added catch in latent + json parsing to resolve errors ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-11307-test-add-metadata-parser-coverage-3446d73d36508108ac36dddcec0a54d4) by [Unito](https://www.unito.io) --------- Co-authored-by: GitHub Action <action@github.com>
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import fs from 'fs'
|
|
import path from 'path'
|
|
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
|
|
import {
|
|
EXPECTED_PROMPT,
|
|
EXPECTED_WORKFLOW,
|
|
mockFileReaderAbort,
|
|
mockFileReaderError
|
|
} from './__fixtures__/helpers'
|
|
import { getFromIsobmffFile } from './isobmff'
|
|
|
|
const fixturePath = path.resolve(__dirname, '__fixtures__/with_metadata.mp4')
|
|
|
|
describe('ISOBMFF (MP4) metadata', () => {
|
|
it('extracts workflow and prompt from QuickTime keys/ilst boxes', async () => {
|
|
const bytes = fs.readFileSync(fixturePath)
|
|
const file = new File([bytes], 'test.mp4', { type: 'video/mp4' })
|
|
|
|
const result = await getFromIsobmffFile(file)
|
|
|
|
expect(result.workflow).toEqual(EXPECTED_WORKFLOW)
|
|
expect(result.prompt).toEqual(EXPECTED_PROMPT)
|
|
})
|
|
|
|
it('returns empty for non-ISOBMFF data', async () => {
|
|
const file = new File([new Uint8Array(16)], 'fake.mp4', {
|
|
type: 'video/mp4'
|
|
})
|
|
|
|
const result = await getFromIsobmffFile(file)
|
|
|
|
expect(result).toEqual({})
|
|
})
|
|
|
|
describe('FileReader failure modes', () => {
|
|
afterEach(() => vi.restoreAllMocks())
|
|
|
|
const file = new File([new Uint8Array(16)], 'test.mp4')
|
|
|
|
it('resolves empty when the FileReader fires error', async () => {
|
|
vi.spyOn(console, 'error').mockImplementation(() => {})
|
|
mockFileReaderError('readAsArrayBuffer')
|
|
expect(await getFromIsobmffFile(file)).toEqual({})
|
|
})
|
|
|
|
it('resolves empty when the FileReader fires abort', async () => {
|
|
mockFileReaderAbort('readAsArrayBuffer')
|
|
expect(await getFromIsobmffFile(file)).toEqual({})
|
|
})
|
|
})
|
|
})
|