Add RestorationManager disposals in test/services/restoration_test.dart. (#135218)

This commit is contained in:
Kostia Sokolovskyi 2023-09-21 19:24:52 +02:00 committed by GitHub
parent 77718845dd
commit 4204f07d76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -30,6 +30,7 @@ void main() {
});
final RestorationManager manager = RestorationManager();
addTearDown(manager.dispose);
final Future<RestorationBucket?> rootBucketFuture = manager.rootBucket;
RestorationBucket? rootBucket;
rootBucketFuture.then((RestorationBucket? bucket) {
@ -65,13 +66,9 @@ void main() {
});
expect(synchronousBucket, isNotNull);
expect(synchronousBucket, same(rootBucket));
},
// TODO(NobodyForNothing): Remove after fixing and cover remaining file
// with leak tests https://github.com/flutter/flutter/issues/134831
leakTrackingTestConfig: const LeakTrackingTestConfig(notDisposedAllowList:
<String, int?>{'RestorationManager': 1}));
});
testWidgets('root bucket received from engine before retrieval', (WidgetTester tester) async {
testWidgetsWithLeakTracking('root bucket received from engine before retrieval', (WidgetTester tester) async {
SystemChannels.restoration.setMethodCallHandler(null);
final List<MethodCall> callsToEngine = <MethodCall>[];
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.restoration, (MethodCall call) async {
@ -79,6 +76,7 @@ void main() {
return null;
});
final RestorationManager manager = RestorationManager();
addTearDown(manager.dispose);
await _pushDataFromEngine(_createEncodedRestorationData1());
@ -90,7 +88,7 @@ void main() {
expect(callsToEngine, isEmpty);
});
testWidgets('root bucket received while engine retrieval is pending', (WidgetTester tester) async {
testWidgetsWithLeakTracking('root bucket received while engine retrieval is pending', (WidgetTester tester) async {
SystemChannels.restoration.setMethodCallHandler(null);
final List<MethodCall> callsToEngine = <MethodCall>[];
final Completer<Map<dynamic, dynamic>> result = Completer<Map<dynamic, dynamic>>();
@ -99,6 +97,7 @@ void main() {
return result.future;
});
final RestorationManager manager = RestorationManager();
addTearDown(manager.dispose);
RestorationBucket? rootBucket;
manager.rootBucket.then((RestorationBucket? bucket) => rootBucket = bucket);
@ -120,11 +119,12 @@ void main() {
expect(rootBucket2!.contains('foo'), isFalse);
});
testWidgets('root bucket is properly replaced when new data is available', (WidgetTester tester) async {
testWidgetsWithLeakTracking('root bucket is properly replaced when new data is available', (WidgetTester tester) async {
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.restoration, (MethodCall call) async {
return _createEncodedRestorationData1();
});
final RestorationManager manager = RestorationManager();
addTearDown(manager.dispose);
RestorationBucket? rootBucket;
manager.rootBucket.then((RestorationBucket? bucket) {
rootBucket = bucket;
@ -160,7 +160,7 @@ void main() {
expect(newChild.read<String>('bar'), 'Hello');
});
testWidgets('returns null as root bucket when restoration is disabled', (WidgetTester tester) async {
testWidgetsWithLeakTracking('returns null as root bucket when restoration is disabled', (WidgetTester tester) async {
final List<MethodCall> callsToEngine = <MethodCall>[];
final Completer<Map<dynamic, dynamic>> result = Completer<Map<dynamic, dynamic>>();
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.restoration, (MethodCall call) {
@ -171,6 +171,7 @@ void main() {
final RestorationManager manager = RestorationManager()..addListener(() {
listenerCount++;
});
addTearDown(manager.dispose);
RestorationBucket? rootBucket;
bool rootBucketResolved = false;
manager.rootBucket.then((RestorationBucket? bucket) {
@ -203,7 +204,7 @@ void main() {
expect(rootBucket, isNull);
});
testWidgets('flushData', (WidgetTester tester) async {
testWidgetsWithLeakTracking('flushData', (WidgetTester tester) async {
final List<MethodCall> callsToEngine = <MethodCall>[];
final Completer<Map<dynamic, dynamic>> result = Completer<Map<dynamic, dynamic>>();
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.restoration, (MethodCall call) {
@ -212,6 +213,7 @@ void main() {
});
final RestorationManager manager = RestorationManager();
addTearDown(manager.dispose);
final Future<RestorationBucket?> rootBucketFuture = manager.rootBucket;
RestorationBucket? rootBucket;
rootBucketFuture.then((RestorationBucket? bucket) {
@ -239,13 +241,14 @@ void main() {
expect(callsToEngine, hasLength(1));
});
testWidgets('isReplacing', (WidgetTester tester) async {
testWidgetsWithLeakTracking('isReplacing', (WidgetTester tester) async {
final Completer<Map<dynamic, dynamic>> result = Completer<Map<dynamic, dynamic>>();
tester.binding.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.restoration, (MethodCall call) {
return result.future;
});
final TestRestorationManager manager = TestRestorationManager();
addTearDown(manager.dispose);
expect(manager.isReplacing, isFalse);
RestorationBucket? rootBucket;