testing.md

July 14, 2026 · View on GitHub

Тестирование компонентов

Быстрый прогон

tools\setup_dev_environment.ps1 -RunTests
# или
tests\run_components.ps1 -Compiler Delphi -IncludeGuiTests

-IncludeGuiTests нужен для VCL smoke-тестов (player_smoke_test, linked_player_smoke_test).

Linux (FPC):

tests/linux/run_components.sh

CI: .github/workflows/component-tests.yml.

Тестовые медиа

СкриптРезультатНазначение
tools/generate_test_av.ps1resource/test_av.mp4A/V playback (6 s, H.264 + AAC)
tools/generate_test_subs.ps1test_subs.mp4, .srtmov_text
tools/generate_test_subs_ass.ps1test_subs_ass.mkv, .assASS
tools/generate_test_subs_bitmap.ps1test_subs_bitmap.mkvdvdsub (опционально)

run_components.ps1 копирует медиа в bin/win64/test_media/.

Карта тестов

ТестЧто проверяет
wrapper_testTFFPacket, TFFFrame
reader_decoder_testTFFReader + TFFDecoder
scaler_testTFFFrameConverter + VCL bitmap
player_smoke_testEngine mode, VCL player
linked_player_smoke_testLinked mode + audio
audio_resampler_testTFFAudioResampler (нужен файл с audio)
encoder_smoke_testСинтетический encode (без медиа)
encoder_transcode_testTranscode pipeline
writer_remux_testRemux в MKV
graph_link_testComponent graph
hook_smoke_testOnFrameHook / hooks
memory_access_testTStream I/O
bitmap_encoder_testTFFBitmapEncoder
mediainfo_testTFFMediaInfo
thumbnail_testTFFThumbnailExtractor
frame_filter_testTFFFrameFilter
remux_job_testTFFRemuxJob
transcode_clip_testClip transcode
hw_decode_testTFFDecoder.HardwareDevice (manual / skip в CI)
subtitle_decoder_testTFFSubtitleDecoder
subtitle_ass_testASS parse
subtitle_bitmap_testBitmap blit (synthetic + optional media)
player_control_smoke_testTFFPlayerControl
fmx_player_smoke_testFMX (compile separately)

Коды выхода: 0 = PASS, 1 = FAIL, 2 = SKIP.

Логи

bin/out/component_tests/*.log – compile log.

bin/out/component_tests/*.run.log – stdout теста.

Платформы

TargetКомпонентные тесты
Delphi Win64Полный набор (VCL с -IncludeGuiTests)
FPC Win64Консольные тесты
FPC Linux64Консольные (без VCL player)

Биндинги всех платформ: tests/run_all_platforms.ps1.