PR #23521 opened by Kacper Michajłow (kasper93)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23521
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23521.patch


From 4630f6b9c739b2cba358926b7774a3ac78ad7fee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <[email protected]>
Date: Wed, 17 Jun 2026 22:03:59 +0200
Subject: [PATCH 1/2] fate: allow tests to clean up generated files
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Add CLEANFILES, a per-test list of extra files to remove after a run.
Honoured unless KEEP_FILES is set.

Signed-off-by: Kacper Michajłow <[email protected]>
---
 tests/Makefile    | 2 +-
 tests/fate-run.sh | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/tests/Makefile b/tests/Makefile
index 8c7d4539a3..4f194874e2 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -324,7 +324,7 @@ $(FATE): export EXECSUF = $(EXESUF)
 $(FATE): export HOSTEXECSUF = $(HOSTEXESUF)
 $(FATE): $(FATE_UTILS:%=tests/%$(HOSTEXESUF)) | $(FATE_OUTDIRS)
        @echo "TEST    $(@:fate-%=%)$(FATE_SUFFIX)"
-       $(Q)$(SRC_PATH)/tests/fate-run.sh $@$(FATE_SUFFIX) "$(TARGET_SAMPLES)" 
"$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' 
'$(THREADS)' '$(THREAD_TYPE)' '$(CPUFLAGS)' '$(CMP_SHIFT)' '$(CMP_TARGET)' 
'$(SIZE_TOLERANCE)' '$(CMP_UNIT)' '$(GEN)' '$(HWACCEL)' '$(REPORT)' 
'$(KEEP_FILES)'
+       $(Q)$(SRC_PATH)/tests/fate-run.sh $@$(FATE_SUFFIX) "$(TARGET_SAMPLES)" 
"$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' 
'$(THREADS)' '$(THREAD_TYPE)' '$(CPUFLAGS)' '$(CMP_SHIFT)' '$(CMP_TARGET)' 
'$(SIZE_TOLERANCE)' '$(CMP_UNIT)' '$(GEN)' '$(HWACCEL)' '$(REPORT)' 
'$(KEEP_FILES)' '$(CLEANFILES)'
 
 fate-list:
        @printf '%s\n' $(sort $(FATE))
diff --git a/tests/fate-run.sh b/tests/fate-run.sh
index 33c7dfac9d..ff7da2fbb1 100755
--- a/tests/fate-run.sh
+++ b/tests/fate-run.sh
@@ -27,6 +27,10 @@ hwaccel=${17:-none}
 report_type=${18:-standard}
 keep=${19:-0}
 
+# Extra files (e.g. generated playlists and segments) to remove after a
+# successful run. Honour $keep so they can be inspected when debugging.
+test "$keep" -ge 1 || cleanfiles=${20}
+
 outdir="tests/data/fate"
 outfile="${outdir}/${test}"
 errfile="${outdir}/${test}.err"
-- 
2.52.0


From cbd5ba3309f77cc97a1e7ab37efac9db1eb409a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <[email protected]>
Date: Wed, 17 Jun 2026 22:04:05 +0200
Subject: [PATCH 2/2] fate/hlsenc: clean up generated playlists and segments
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Kacper Michajłow <[email protected]>
---
 tests/fate/hlsenc.mak | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/tests/fate/hlsenc.mak b/tests/fate/hlsenc.mak
index b71fe219a6..df82c25128 100644
--- a/tests/fate/hlsenc.mak
+++ b/tests/fate/hlsenc.mak
@@ -7,6 +7,7 @@ tests/data/live_no_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
 
 FATE_HLSENC-$(call FILTERDEMDECENCMUX, HDCD AEVALSRC ARESAMPLE, HLS MPEGTS, 
MP2 PCM_F64LE, MP2FIXED PCM_S24LE, HLS MPEGTS PCM_S24LE, LAVFI_INDEV) += 
fate-hls-live-no-endlist
 fate-hls-live-no-endlist: tests/data/live_no_endlist.m3u8
+fate-hls-live-no-endlist: CLEANFILES = tests/data/live_no_endlist.m3u8 
tests/data/live_no_endlist_*.ts
 fate-hls-live-no-endlist: SRC = $(TARGET_PATH)/tests/data/live_no_endlist.m3u8
 fate-hls-live-no-endlist: CMD = md5 -i $(SRC) -af hdcd=process_stereo=false -t 
6 -f s24le
 fate-hls-live-no-endlist: CMP = oneline
@@ -22,6 +23,7 @@ tests/data/event_no_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) 
| tests/data
 
 FATE_HLSENC-$(call FILTERDEMDECENCMUX, HDCD AEVALSRC ARESAMPLE, HLS MPEGTS, 
MP2 PCM_F64LE, MP2FIXED PCM_S24LE, HLS MPEGTS PCM_S24LE, LAVFI_INDEV) += 
fate-hls-event-no-endlist
 fate-hls-event-no-endlist: tests/data/event_no_endlist.m3u8
+fate-hls-event-no-endlist: CLEANFILES = tests/data/event_no_endlist.m3u8 
tests/data/event_no_endlist_*.ts
 fate-hls-event-no-endlist: SRC = 
$(TARGET_PATH)/tests/data/event_no_endlist.m3u8
 fate-hls-event-no-endlist: CMD = md5 -ss 3 -i $(SRC) -af 
hdcd=process_stereo=false -t 3 -f s24le
 fate-hls-event-no-endlist: CMP = oneline
@@ -36,6 +38,7 @@ tests/data/live_last_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) 
| tests/data
 
 FATE_HLSENC-$(call FILTERDEMDECENCMUX, HDCD AEVALSRC ARESAMPLE, HLS MPEGTS, 
MP2 PCM_F64LE, MP2FIXED PCM_S24LE, HLS MPEGTS PCM_S24LE, LAVFI_INDEV) += 
fate-hls-live-last-endlist
 fate-hls-live-last-endlist: tests/data/live_last_endlist.m3u8
+fate-hls-live-last-endlist: CLEANFILES = tests/data/live_last_endlist.m3u8 
tests/data/live_last_endlist_*.ts
 fate-hls-live-last-endlist: SRC = 
$(TARGET_PATH)/tests/data/live_last_endlist.m3u8
 fate-hls-live-last-endlist: CMD = md5 -i $(SRC) -af hdcd=process_stereo=false 
-t 6 -f s24le
 fate-hls-live-last-endlist: CMP = oneline
@@ -51,6 +54,7 @@ tests/data/live_endlist.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
 
 FATE_HLSENC-$(call FILTERDEMDECENCMUX, HDCD AEVALSRC ARESAMPLE, HLS MPEGTS, 
MP2 PCM_F64LE, MP2FIXED PCM_S24LE, HLS MPEGTS PCM_S24LE, LAVFI_INDEV ) += 
fate-hls-live-endlist
 fate-hls-live-endlist: tests/data/live_endlist.m3u8
+fate-hls-live-endlist: CLEANFILES = tests/data/live_endlist.m3u8 
tests/data/live_endlist_*.ts
 fate-hls-live-endlist: SRC = $(TARGET_PATH)/tests/data/live_endlist.m3u8
 fate-hls-live-endlist: CMD = md5 -i $(SRC) -af hdcd=process_stereo=false -t 20 
-f s24le
 fate-hls-live-endlist: CMP = oneline
@@ -65,6 +69,7 @@ tests/data/hls_segment_size.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) 
| tests/data
 
 FATE_HLSENC-$(call FILTERDEMDECENCMUX, AEVALSRC ARESAMPLE, HLS MPEGTS, MP2 
PCM_F64LE, MP2FIXED, HLS MPEGTS, LAVFI_INDEV) += fate-hls-segment-size
 fate-hls-segment-size: tests/data/hls_segment_size.m3u8
+fate-hls-segment-size: CLEANFILES = tests/data/hls_segment_size.m3u8 
tests/data/hls_segment_size_*.ts
 fate-hls-segment-size: CMD = framecrc -auto_conversion_filters -flags 
+bitexact -i $(TARGET_PATH)/tests/data/hls_segment_size.m3u8 -vf setpts=N*23
 
 tests/data/hls_segment_single.m3u8: TAG = GEN
@@ -76,6 +81,7 @@ tests/data/hls_segment_single.m3u8: 
ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
 
 FATE_HLSENC-$(call FILTERDEMDECENCMUX, AEVALSRC ARESAMPLE, HLS MPEGTS, MP2 
PCM_F64LE, MP2FIXED, HLS MPEGTS, LAVFI_INDEV) += fate-hls-segment-single
 fate-hls-segment-single: tests/data/hls_segment_single.m3u8
+fate-hls-segment-single: CLEANFILES = tests/data/hls_segment_single.m3u8 
tests/data/hls_segment_single.ts
 fate-hls-segment-single: CMD = framecrc -auto_conversion_filters -flags 
+bitexact -i $(TARGET_PATH)/tests/data/hls_segment_single.m3u8 -vf setpts=N*23
 
 tests/data/hls_init_time.m3u8: TAG = GEN
@@ -87,6 +93,7 @@ tests/data/hls_init_time.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
 
 FATE_HLSENC-$(call FILTERDEMDECENCMUX, AEVALSRC ARESAMPLE, HLS MPEGTS, MP2 
PCM_F64LE, MP2FIXED, HLS MPEGTS, LAVFI_INDEV) += fate-hls-init-time
 fate-hls-init-time: tests/data/hls_init_time.m3u8
+fate-hls-init-time: CLEANFILES = tests/data/hls_init_time.m3u8 
tests/data/hls_init_time_*.ts
 fate-hls-init-time: CMD = framecrc -auto_conversion_filters -flags +bitexact 
-i $(TARGET_PATH)/tests/data/hls_init_time.m3u8 -vf setpts=N*23
 
 tests/data/hls_list_size.m3u8: TAG = GEN
@@ -98,6 +105,7 @@ tests/data/hls_list_size.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
 
 FATE_HLSENC-$(call FILTERDEMDECENCMUX, AEVALSRC ARESAMPLE, HLS MPEGTS, MP2 
PCM_F64LE, MP2FIXED, HLS MPEGTS, LAVFI_INDEV) += fate-hls-list-size
 fate-hls-list-size: tests/data/hls_list_size.m3u8
+fate-hls-list-size: CLEANFILES = tests/data/hls_list_size.m3u8 
tests/data/hls_list_size_*.ts
 fate-hls-list-size: CMD = framecrc -auto_conversion_filters -flags +bitexact 
-i $(TARGET_PATH)/tests/data/hls_list_size.m3u8 -vf setpts=N*23
 
 tests/data/hls_fmp4.m3u8: TAG = GEN
@@ -110,6 +118,7 @@ tests/data/hls_fmp4.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | 
tests/data
 
 FATE_HLSENC-$(call FILTERDEMDECENCMUX, AEVALSRC ARESAMPLE, HLS MPEGTS, MP2 
PCM_F64LE, MP2FIXED, HLS MPEGTS, LAVFI_INDEV) += fate-hls-fmp4
 fate-hls-fmp4: tests/data/hls_fmp4.m3u8
+fate-hls-fmp4: CLEANFILES = tests/data/hls_fmp4.m3u8 
tests/data/hls_fmp4_[0-9]*.m4s tests/data/now.mp4
 fate-hls-fmp4: CMD = framecrc -auto_conversion_filters -flags +bitexact -i 
$(TARGET_PATH)/tests/data/hls_fmp4.m3u8 -vf setpts=N*23
 
 tests/data/hls_fmp4_ac3.m3u8: TAG = GEN
@@ -124,6 +133,7 @@ FATE_HLSENC-yes := $(if $(call FRAMECRC), 
$(FATE_HLSENC-yes))
 
 FATE_HLSENC_PROBE-$(call DEMMUX, HLS AC3, HLS MP4, AC3_DECODER) += 
fate-hls-fmp4_ac3
 fate-hls-fmp4_ac3: tests/data/hls_fmp4_ac3.m3u8
+fate-hls-fmp4_ac3: CLEANFILES = tests/data/hls_fmp4_ac3.m3u8 
tests/data/hls_fmp4_ac3_*.m4s tests/data/now_ac3.mp4
 fate-hls-fmp4_ac3: CMD = probeaudiostream $(TARGET_PATH)/tests/data/now_ac3.mp4
 
 
@@ -139,6 +149,7 @@ FATE_HLSENC-yes := $(if $(call FRAMECRC), 
$(FATE_HLSENC-yes))
 
 FATE_HLSENC_PROBE-$(call FRAMECRC, HLS) += fate-hls-cmfa
 fate-hls-cmfa: tests/data/hls_cmfa.m3u8
+fate-hls-cmfa: CLEANFILES = tests/data/hls_cmfa.m3u8 
tests/data/hls_fmp4_[0-9]*.cmfa tests/data/now.cmfa
 fate-hls-cmfa: CMD = framecrc -i $(TARGET_PATH)/tests/data/hls_cmfa.m3u8 -c 
copy
 
 FATE_SAMPLES_FFMPEG += $(FATE_HLSENC-yes)
@@ -156,6 +167,7 @@ tests/data/hls_playlist_type_vod.m3u8: 
ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
 
 FATE_HLSENC_LAVFI-$(call ALLYES, TESTSRC2_FILTER LAVFI_INDEV 
MPEG2VIDEO_ENCODER HLS_MUXER MPEGTS_MUXER FILE_PROTOCOL) += 
fate-hls-playlist-type-vod
 fate-hls-playlist-type-vod: tests/data/hls_playlist_type_vod.m3u8
+fate-hls-playlist-type-vod: CLEANFILES = tests/data/hls_playlist_type_vod.m3u8 
tests/data/hls_playlist_type_vod_*.ts
 fate-hls-playlist-type-vod: CMD = sed -n -e /^\#EXT-X-PLAYLIST-TYPE:/p -e 
/^\#EXT-X-ENDLIST/p $(TARGET_PATH)/tests/data/hls_playlist_type_vod.m3u8
 fate-hls-playlist-type-vod: CMP = diff
 
@@ -169,6 +181,7 @@ tests/data/hls_playlist_type_event.m3u8: 
ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
 
 FATE_HLSENC_LAVFI-$(call ALLYES, TESTSRC2_FILTER LAVFI_INDEV 
MPEG2VIDEO_ENCODER HLS_MUXER MPEGTS_MUXER FILE_PROTOCOL) += 
fate-hls-playlist-type-event
 fate-hls-playlist-type-event: tests/data/hls_playlist_type_event.m3u8
+fate-hls-playlist-type-event: CLEANFILES = 
tests/data/hls_playlist_type_event.m3u8 tests/data/hls_playlist_type_event_*.ts
 fate-hls-playlist-type-event: CMD = sed -n -e /^\#EXT-X-PLAYLIST-TYPE:/p -e 
/^\#EXT-X-ENDLIST/p $(TARGET_PATH)/tests/data/hls_playlist_type_event.m3u8
 fate-hls-playlist-type-event: CMP = diff
 
@@ -182,6 +195,7 @@ tests/data/hls_round_durations.m3u8: 
ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
 
 FATE_HLSENC_LAVFI-$(call ALLYES, TESTSRC2_FILTER LAVFI_INDEV 
MPEG2VIDEO_ENCODER HLS_MUXER MPEGTS_MUXER FILE_PROTOCOL) += 
fate-hls-round-durations
 fate-hls-round-durations: tests/data/hls_round_durations.m3u8
+fate-hls-round-durations: CLEANFILES = tests/data/hls_round_durations.m3u8 
tests/data/hls_round_durations_*.ts
 fate-hls-round-durations: CMD = sed -n -e /^\#EXTINF:/p 
$(TARGET_PATH)/tests/data/hls_round_durations.m3u8
 fate-hls-round-durations: CMP = diff
 
@@ -195,6 +209,7 @@ tests/data/hls_discont_start.m3u8: 
ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
 
 FATE_HLSENC_LAVFI-$(call ALLYES, TESTSRC2_FILTER LAVFI_INDEV 
MPEG2VIDEO_ENCODER HLS_MUXER MPEGTS_MUXER FILE_PROTOCOL) += 
fate-hls-discont-start
 fate-hls-discont-start: tests/data/hls_discont_start.m3u8
+fate-hls-discont-start: CLEANFILES = tests/data/hls_discont_start.m3u8 
tests/data/hls_discont_start_*.ts
 fate-hls-discont-start: CMD = sed -n -e /^\#EXT-X-DISCONTINUITY/p -e 
/^\#EXTINF:/p -e /^[^\#]/p $(TARGET_PATH)/tests/data/hls_discont_start.m3u8
 fate-hls-discont-start: CMP = diff
 
@@ -208,6 +223,7 @@ tests/data/hls_independent_segments.m3u8: 
ffmpeg$(PROGSSUF)$(EXESUF) | tests/dat
 
 FATE_HLSENC_LAVFI-$(call ALLYES, TESTSRC2_FILTER LAVFI_INDEV 
MPEG2VIDEO_ENCODER HLS_MUXER MPEGTS_MUXER FILE_PROTOCOL) += 
fate-hls-independent-segments
 fate-hls-independent-segments: tests/data/hls_independent_segments.m3u8
+fate-hls-independent-segments: CLEANFILES = 
tests/data/hls_independent_segments.m3u8 
tests/data/hls_independent_segments_*.ts
 fate-hls-independent-segments: CMD = sed -n -e 
/^\#EXT-X-INDEPENDENT-SEGMENTS/p 
$(TARGET_PATH)/tests/data/hls_independent_segments.m3u8
 fate-hls-independent-segments: CMP = diff
 
@@ -221,6 +237,7 @@ tests/data/hls_start_number.m3u8: 
ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
 
 FATE_HLSENC_LAVFI-$(call ALLYES, TESTSRC2_FILTER LAVFI_INDEV 
MPEG2VIDEO_ENCODER HLS_MUXER MPEGTS_MUXER FILE_PROTOCOL) += 
fate-hls-start-number
 fate-hls-start-number: tests/data/hls_start_number.m3u8
+fate-hls-start-number: CLEANFILES = tests/data/hls_start_number.m3u8 
tests/data/hls_start_number_*.ts
 fate-hls-start-number: CMD = sed -n -e /^\#EXT-X-MEDIA-SEQUENCE:/p -e 
/^[^\#]/p $(TARGET_PATH)/tests/data/hls_start_number.m3u8
 fate-hls-start-number: CMP = diff
 
-- 
2.52.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to