WIP 시험 흔들림: batch_test "186 · 187" - 실제 시간으로 기다리기 · 한도 4분 · 임시 폴더 지우기 다시 시도 (검토 대기)

976 직전 전체 시험 (50bd2bf) 에서 PC 가 바쁠 때 정해진 횟수 (400 × 25ms) 안에 v1 이 시작하지 않아 30초 한도에 걸렸고,
그때 ffmpeg 가 파일을 쥐고 있어 jj_batch186_ 임시 폴더를 지우지 못하고 남겼다. 240 (e7cd30e) 과 같은 방식으로 고침. 기대값은 그대로.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
next
RyuJongJin 2026-10-18 04:52:24 +09:00
parent 29b4365b74
commit 6567d8a5b4
1 changed files with 17 additions and 5 deletions

View File

@ -243,7 +243,18 @@ void main() {
final tool = ProcessMediaTool('ffmpeg', 'ffprobe');
if (await tool.version() == null) return markTestSkipped('FFmpeg 없음');
final dir = Directory.systemTemp.createTempSync('jj_batch186_');
addTearDown(() => dir.deleteSync(recursive: true));
// 시간 초과로 끝나면 ffmpeg 가 아직 파일을 쥐고 있어 바로 지우지 못했다 (10/18 전체 시험) - 잠시 다시 시도
addTearDown(() async {
for (var i = 0;; i++) {
try {
if (dir.existsSync()) dir.deleteSync(recursive: true);
return;
} on FileSystemException {
if (i >= 50) rethrow;
await Future<void>.delayed(const Duration(milliseconds: 200));
}
}
});
// v1 은 다시 인코딩에 시간이 걸리게 길게, v2 · v3 는 짧게
final files = [for (final n in ['v1', 'v2', 'v3']) p.join(dir.path, '$n.mp4')];
for (final (i, f) in files.indexed) {
@ -257,9 +268,10 @@ void main() {
await c.addVideos(files);
final [v1, v2, v3] = c.videos;
final building = c.buildVideos([v1, v2, v3]);
// v1 이 만들어지는 중 · 묶음에 2개가 기다림
for (var i = 0; i < 400 && !(v1.status == JobStatus.running && v1.progress > 0.02); i++) {
await Future<void>.delayed(const Duration(milliseconds: 25));
// v1 이 만들어지는 중 · 묶음에 2개가 기다림. 관리자 지적 (10/18): PC 가 바쁘면 정해진 횟수 안에 오지 않아 30초 한도에 걸렸다 - 실제 시간으로 (최대 90초)
final end = DateTime.now().add(const Duration(seconds: 90));
while (!(v1.status == JobStatus.running && v1.progress > 0.02) && DateTime.now().isBefore(end)) {
await Future<void>.delayed(const Duration(milliseconds: 20));
}
expect(v1.status, JobStatus.running);
expect(c.batchWaiting, 2, reason: '한 묶음 안의 기다리는 동영상도 대기로 센다');
@ -270,7 +282,7 @@ void main() {
expect(v1.message, '취소됨');
expect(File(outputMkvPath(v1.path)).existsSync(), isFalse, reason: '만들다 만 파일은 지움');
expect(c.logs.join('\n'), contains('성공 2 · 취소 1 · 실패 0 / 전체 3'));
});
}, timeout: const Timeout(Duration(minutes: 4)));
group('P0 (931): 결과 MKV 가 이미 있을 때 · 취소해도 예전 완성본은 그대로', () {
late Directory dir;