WIP 시험 흔들림: batch_test "186 · 187" - 실제 시간으로 기다리기 · 한도 4분 · 임시 폴더 지우기 다시 시도 (검토 대기)
976 직전 전체 시험 (next50bd2bf) 에서 PC 가 바쁠 때 정해진 횟수 (400 × 25ms) 안에 v1 이 시작하지 않아 30초 한도에 걸렸고, 그때 ffmpeg 가 파일을 쥐고 있어 jj_batch186_ 임시 폴더를 지우지 못하고 남겼다. 240 (e7cd30e) 과 같은 방식으로 고침. 기대값은 그대로. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
parent
29b4365b74
commit
6567d8a5b4
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue