WIP 시험 흔들림: sync_problem 71 (만들다 만 파일 수가 늦게) · dns TC (두 번 왕복 시간) · 두 번 누르기 (가짜 시간 간격) (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>묶음6
parent
a5017965cb
commit
62e8d52031
|
|
@ -54,7 +54,8 @@ void main() {
|
||||||
final t = FakeDns({'big.test': '10.9.9.9'}, truncateUdp: true);
|
final t = FakeDns({'big.test': '10.9.9.9'}, truncateUdp: true);
|
||||||
await t.start();
|
await t.start();
|
||||||
addTearDown(t.close);
|
addTearDown(t.close);
|
||||||
final r = DnsResolver(config: () => custom('127.0.0.1'), port: t.port);
|
// 흔들림: UDP (잘림) → TCP 다시 묻기가 두 번 왕복이라, 전체 시험이 무거울 때 처음 값 2.5초를 넘길 수 있다 - 넉넉히
|
||||||
|
final r = DnsResolver(config: () => custom('127.0.0.1'), port: t.port, timeout: const Duration(seconds: 10));
|
||||||
// 전체 실행에서만 실패한 적이 있다 - 실패하면 실제 오류와 가짜 DNS 의 기록을 남긴다
|
// 전체 실행에서만 실패한 적이 있다 - 실패하면 실제 오류와 가짜 DNS 의 기록을 남긴다
|
||||||
try {
|
try {
|
||||||
expect((await r.lookup('big.test')).single.address, '10.9.9.9');
|
expect((await r.lookup('big.test')).single.address, '10.9.9.9');
|
||||||
|
|
|
||||||
|
|
@ -735,11 +735,11 @@ Finder chevronOf(String name) => find.descendant(
|
||||||
|
|
||||||
/// 두 번 누르기 (실제 비동기 구역에서: 그때 시작한 파일 작업이 테스트의 가짜 시간에 묶이지 않게)
|
/// 두 번 누르기 (실제 비동기 구역에서: 그때 시작한 파일 작업이 테스트의 가짜 시간에 묶이지 않게)
|
||||||
Future<void> doubleTap(WidgetTester tester, Finder f) async {
|
Future<void> doubleTap(WidgetTester tester, Finder f) async {
|
||||||
await tester.runAsync(() async {
|
// 흔들림: 두 누름 사이를 실제 시간 (80ms) 으로 쉬면 무거울 때 두 번 누르기 판정 (300ms) 을 넘겨 한 번씩 두 번으로 됐다 -
|
||||||
await tester.tap(f);
|
// 시험의 가짜 시간으로 50ms. 그 뒤 시작한 파일 작업은 settle (실제 시간) 이 기다린다
|
||||||
await Future<void>.delayed(const Duration(milliseconds: 80));
|
await tester.tap(f);
|
||||||
await tester.tap(f);
|
await tester.pump(const Duration(milliseconds: 50));
|
||||||
});
|
await tester.tap(f);
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import 'package:jj_mkvmaker/ui/explorer_page.dart';
|
||||||
import 'package:jj_mkvmaker/ui/monitor_page.dart';
|
import 'package:jj_mkvmaker/ui/monitor_page.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
|
|
||||||
import 'explorer_test.dart' show act, settle;
|
import 'explorer_test.dart' show act, calm, settle;
|
||||||
|
|
||||||
/// 68 · 70 · 71
|
/// 68 · 70 · 71
|
||||||
void main() {
|
void main() {
|
||||||
|
|
@ -225,10 +225,11 @@ void main() {
|
||||||
tester.view.devicePixelRatio = 1;
|
tester.view.devicePixelRatio = 1;
|
||||||
addTearDown(tester.view.reset);
|
addTearDown(tester.view.reset);
|
||||||
await tester.runAsync(() => tester.pumpWidget(MaterialApp(home: ExplorerPage(c: c))));
|
await tester.runAsync(() => tester.pumpWidget(MaterialApp(home: ExplorerPage(c: c))));
|
||||||
await settle(tester, () => find.text('doc.txt').evaluate().isNotEmpty);
|
// 흔들림: 만들다 만 파일 수는 목록을 읽은 뒤 따로 센다 - 무거울 때는 doc.txt 보다 늦게 나온다
|
||||||
|
await settle(tester, () => find.text('doc.txt').evaluate().isNotEmpty && find.text('만들다 만 파일 1개').evaluate().isNotEmpty);
|
||||||
expect(find.text('만들다 만 파일 1개'), findsWidgets);
|
expect(find.text('만들다 만 파일 1개'), findsWidgets);
|
||||||
await act(tester, () => tester.tap(find.text('지우기').first));
|
await act(tester, () => tester.tap(find.text('지우기').first));
|
||||||
await tester.pumpAndSettle();
|
await calm(tester);
|
||||||
expect(find.text('만들다 만 파일 1개를 지울까요?'), findsOneWidget);
|
expect(find.text('만들다 만 파일 1개를 지울까요?'), findsOneWidget);
|
||||||
expect(find.text('movie.mkv.jjpart'), findsWidgets);
|
expect(find.text('movie.mkv.jjpart'), findsWidgets);
|
||||||
await act(tester, () => tester.tap(find.widgetWithText(FilledButton, '지우기')));
|
await act(tester, () => tester.tap(find.widgetWithText(FilledButton, '지우기')));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue