JJ_MKVMaker/test/support/temp_dirs.dart

33 lines
1.3 KiB
Dart

import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
/// 뒤에서 저장이 끝나는 것 (책갈피 저장 등) 을 기다렸다가 지울 임시 폴더 - 시험 파일이 끝날 때 지운다.
/// 시험마다 바로 지우면 늦게 끝난 저장이 폴더를 다시 만들어 %TEMP% 에 jj_* 가 남았다 (관리자 지시 10/17, tool/test_temp_check.ps1).
final _later = <Directory>[];
/// [prefix] 로 임시 폴더를 만들고, 파일 끝 ([deleteTempDirsAtEnd]) 에 지우도록 적어 둔다
Directory tempDirUntilEnd(String prefix) {
final d = Directory.systemTemp.createTempSync(prefix);
_later.add(d);
return d;
}
/// main() 에서 한 번 부른다: 파일의 시험이 다 끝나면 [tempDirUntilEnd] 로 만든 폴더를 지운다
/// (늦게 끝난 저장이 다시 만들 수 있어 잠깐씩 기다리며 몇 번 본다)
void deleteTempDirsAtEnd() {
tearDownAll(() async {
for (var round = 0; round < 5; round++) {
await Future<void>.delayed(const Duration(milliseconds: 200));
for (final d in _later) {
try {
if (d.existsSync()) d.deleteSync(recursive: true);
} on FileSystemException {
// 잠깐 잡혀 있으면 다음 차례에
}
}
}
_later.removeWhere((d) => !d.existsSync());
});
}