Skip to content

Commit c3db020

Browse files
authored
Cover more test/widgets tests with leak tracking #9 (flutter#135054)
1 parent d0004c9 commit c3db020

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+366
-230
lines changed

packages/flutter/test/widgets/selection_container_test.dart

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/rendering.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
void main() {
1011

@@ -20,9 +21,11 @@ void main() {
2021
);
2122
}
2223

23-
testWidgets('updates its registrar and delegate based on the number of selectables', (WidgetTester tester) async {
24+
testWidgetsWithLeakTracking('updates its registrar and delegate based on the number of selectables', (WidgetTester tester) async {
2425
final TestSelectionRegistrar registrar = TestSelectionRegistrar();
2526
final TestContainerDelegate delegate = TestContainerDelegate();
27+
addTearDown(delegate.dispose);
28+
2629
await pumpContainer(
2730
tester,
2831
SelectionContainer(
@@ -42,9 +45,11 @@ void main() {
4245
expect(delegate.selectables.length, 3);
4346
});
4447

45-
testWidgets('disabled container', (WidgetTester tester) async {
48+
testWidgetsWithLeakTracking('disabled container', (WidgetTester tester) async {
4649
final TestSelectionRegistrar registrar = TestSelectionRegistrar();
4750
final TestContainerDelegate delegate = TestContainerDelegate();
51+
addTearDown(delegate.dispose);
52+
4853
await pumpContainer(
4954
tester,
5055
SelectionContainer(
@@ -65,10 +70,13 @@ void main() {
6570
expect(delegate.selectables.length, 0);
6671
});
6772

68-
testWidgets('Swapping out container delegate does not crash', (WidgetTester tester) async {
73+
testWidgetsWithLeakTracking('Swapping out container delegate does not crash', (WidgetTester tester) async {
6974
final TestSelectionRegistrar registrar = TestSelectionRegistrar();
7075
final TestContainerDelegate delegate = TestContainerDelegate();
76+
addTearDown(delegate.dispose);
7177
final TestContainerDelegate childDelegate = TestContainerDelegate();
78+
addTearDown(childDelegate.dispose);
79+
7280
await pumpContainer(
7381
tester,
7482
SelectionContainer(
@@ -90,6 +98,8 @@ void main() {
9098
expect(delegate.value.hasContent, isTrue);
9199

92100
final TestContainerDelegate newDelegate = TestContainerDelegate();
101+
addTearDown(newDelegate.dispose);
102+
93103
await pumpContainer(
94104
tester,
95105
SelectionContainer(
@@ -112,10 +122,13 @@ void main() {
112122
expect(tester.takeException(), isNull);
113123
});
114124

115-
testWidgets('Can update within one frame', (WidgetTester tester) async {
125+
testWidgetsWithLeakTracking('Can update within one frame', (WidgetTester tester) async {
116126
final TestSelectionRegistrar registrar = TestSelectionRegistrar();
117127
final TestContainerDelegate delegate = TestContainerDelegate();
128+
addTearDown(delegate.dispose);
118129
final TestContainerDelegate childDelegate = TestContainerDelegate();
130+
addTearDown(childDelegate.dispose);
131+
119132
await pumpContainer(
120133
tester,
121134
SelectionContainer(
@@ -139,9 +152,11 @@ void main() {
139152
expect(delegate.value.hasContent, isTrue);
140153
});
141154

142-
testWidgets('selection container registers itself if there is a selectable child', (WidgetTester tester) async {
155+
testWidgetsWithLeakTracking('selection container registers itself if there is a selectable child', (WidgetTester tester) async {
143156
final TestSelectionRegistrar registrar = TestSelectionRegistrar();
144157
final TestContainerDelegate delegate = TestContainerDelegate();
158+
addTearDown(delegate.dispose);
159+
145160
await pumpContainer(
146161
tester,
147162
SelectionContainer(
@@ -181,9 +196,10 @@ void main() {
181196
expect(registrar.selectables.length, 0);
182197
});
183198

184-
testWidgets('selection container gets registrar from context if not provided', (WidgetTester tester) async {
199+
testWidgetsWithLeakTracking('selection container gets registrar from context if not provided', (WidgetTester tester) async {
185200
final TestSelectionRegistrar registrar = TestSelectionRegistrar();
186201
final TestContainerDelegate delegate = TestContainerDelegate();
202+
addTearDown(delegate.dispose);
187203

188204
await pumpContainer(
189205
tester,

packages/flutter/test/widgets/semantics_10_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ import 'package:flutter/material.dart';
66
import 'package:flutter/rendering.dart';
77
import 'package:flutter/widgets.dart';
88
import 'package:flutter_test/flutter_test.dart';
9+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
910

1011
import 'semantics_tester.dart';
1112

1213
void main() {
13-
testWidgets('can cease to be semantics boundary after markNeedsSemanticsUpdate() has already been called once', (WidgetTester tester) async {
14+
testWidgetsWithLeakTracking('can cease to be semantics boundary after markNeedsSemanticsUpdate() has already been called once', (WidgetTester tester) async {
1415
final SemanticsTester semantics = SemanticsTester(tester);
1516

1617
await tester.pumpWidget(

packages/flutter/test/widgets/semantics_11_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ import 'package:flutter/material.dart';
66
import 'package:flutter/rendering.dart';
77
import 'package:flutter/widgets.dart';
88
import 'package:flutter_test/flutter_test.dart';
9+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
910

1011
import 'semantics_tester.dart';
1112

1213
void main() {
13-
testWidgets('markNeedsSemanticsUpdate() called on non-boundary with non-boundary parent', (WidgetTester tester) async {
14+
testWidgetsWithLeakTracking('markNeedsSemanticsUpdate() called on non-boundary with non-boundary parent', (WidgetTester tester) async {
1415
final SemanticsTester semantics = SemanticsTester(tester);
1516

1617
await tester.pumpWidget(

packages/flutter/test/widgets/semantics_1_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('Semantics 1', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('Semantics 1', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415

1516
// smoketest

packages/flutter/test/widgets/semantics_2_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('Semantics 2', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('Semantics 2', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415

1516
// this test is the same as the test in Semantics 1, but

packages/flutter/test/widgets/semantics_3_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('Semantics 3', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('Semantics 3', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415

1516
// implicit annotators

packages/flutter/test/widgets/semantics_4_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('Semantics 4', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('Semantics 4', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415

1516
// O

packages/flutter/test/widgets/semantics_5_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('Semantics 5', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('Semantics 5', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415

1516
await tester.pumpWidget(

packages/flutter/test/widgets/semantics_6_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('can change semantics in a branch blocked by BlockSemantics', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('can change semantics in a branch blocked by BlockSemantics', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415

1516
final TestSemantics expectedSemantics = TestSemantics.root(

packages/flutter/test/widgets/semantics_7_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('Semantics 7 - Merging', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('Semantics 7 - Merging', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415

1516
String label;

packages/flutter/test/widgets/semantics_8_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('Semantics 8 - Merging with reset', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('Semantics 8 - Merging with reset', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415

1516
await tester.pumpWidget(

packages/flutter/test/widgets/semantics_9_test.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ import 'package:flutter/material.dart';
66
import 'package:flutter/rendering.dart';
77
import 'package:flutter/widgets.dart';
88
import 'package:flutter_test/flutter_test.dart';
9+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
910

1011
import 'semantics_tester.dart';
1112

1213
void main() {
1314
group('BlockSemantics', () {
14-
testWidgets('hides semantic nodes of siblings', (WidgetTester tester) async {
15+
testWidgetsWithLeakTracking('hides semantic nodes of siblings', (WidgetTester tester) async {
1516
final SemanticsTester semantics = SemanticsTester(tester);
1617

1718
await tester.pumpWidget(Stack(
@@ -49,7 +50,7 @@ void main() {
4950
semantics.dispose();
5051
});
5152

52-
testWidgets('does not hides semantic nodes of siblings outside the current semantic boundary', (WidgetTester tester) async {
53+
testWidgetsWithLeakTracking('does not hides semantic nodes of siblings outside the current semantic boundary', (WidgetTester tester) async {
5354
final SemanticsTester semantics = SemanticsTester(tester);
5455

5556
await tester.pumpWidget(Directionality(textDirection: TextDirection.ltr, child: Stack(
@@ -103,7 +104,7 @@ void main() {
103104
semantics.dispose();
104105
});
105106

106-
testWidgets('node is semantic boundary and blocking previously painted nodes', (WidgetTester tester) async {
107+
testWidgetsWithLeakTracking('node is semantic boundary and blocking previously painted nodes', (WidgetTester tester) async {
107108
final SemanticsTester semantics = SemanticsTester(tester);
108109
final GlobalKey stackKey = GlobalKey();
109110

packages/flutter/test/widgets/semantics_child_configs_delegate_test.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/rendering.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('Semantics can merge sibling group', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('Semantics can merge sibling group', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415
const SemanticsTag first = SemanticsTag('1');
1516
const SemanticsTag second = SemanticsTag('2');
@@ -74,7 +75,7 @@ void main() {
7475
semantics.dispose();
7576
});
7677

77-
testWidgets('Semantics can drop semantics config', (WidgetTester tester) async {
78+
testWidgetsWithLeakTracking('Semantics can drop semantics config', (WidgetTester tester) async {
7879
final SemanticsTester semantics = SemanticsTester(tester);
7980
const SemanticsTag first = SemanticsTag('1');
8081
const SemanticsTag second = SemanticsTag('2');
@@ -132,7 +133,7 @@ void main() {
132133
semantics.dispose();
133134
});
134135

135-
testWidgets('Semantics throws when mark the same config twice case 1', (WidgetTester tester) async {
136+
testWidgetsWithLeakTracking('Semantics throws when mark the same config twice case 1', (WidgetTester tester) async {
136137
const SemanticsTag first = SemanticsTag('1');
137138
const SemanticsTag second = SemanticsTag('2');
138139
const SemanticsTag third = SemanticsTag('3');
@@ -178,7 +179,7 @@ void main() {
178179
expect(tester.takeException(), isAssertionError);
179180
});
180181

181-
testWidgets('Semantics throws when mark the same config twice case 2', (WidgetTester tester) async {
182+
testWidgetsWithLeakTracking('Semantics throws when mark the same config twice case 2', (WidgetTester tester) async {
182183
const SemanticsTag first = SemanticsTag('1');
183184
const SemanticsTag second = SemanticsTag('2');
184185
const SemanticsTag third = SemanticsTag('3');
@@ -224,7 +225,7 @@ void main() {
224225
expect(tester.takeException(), isAssertionError);
225226
});
226227

227-
testWidgets('RenderObject with semantics child delegate will mark correct boundary dirty', (WidgetTester tester) async {
228+
testWidgetsWithLeakTracking('RenderObject with semantics child delegate will mark correct boundary dirty', (WidgetTester tester) async {
228229
final UniqueKey inner = UniqueKey();
229230
final UniqueKey boundaryParent = UniqueKey();
230231
final UniqueKey grandBoundaryParent = UniqueKey();

packages/flutter/test/widgets/semantics_clipping_test.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter/widgets.dart';
77
import 'package:flutter_test/flutter_test.dart';
8+
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
89

910
import 'semantics_tester.dart';
1011

1112
void main() {
12-
testWidgets('SemanticNode.rect is clipped', (WidgetTester tester) async {
13+
testWidgetsWithLeakTracking('SemanticNode.rect is clipped', (WidgetTester tester) async {
1314
final SemanticsTester semantics = SemanticsTester(tester);
1415

1516
await tester.pumpWidget(const Directionality(
@@ -67,7 +68,7 @@ void main() {
6768
semantics.dispose();
6869
});
6970

70-
testWidgets('SemanticsNode is not removed if out of bounds and merged into something within bounds', (WidgetTester tester) async {
71+
testWidgetsWithLeakTracking('SemanticsNode is not removed if out of bounds and merged into something within bounds', (WidgetTester tester) async {
7172
final SemanticsTester semantics = SemanticsTester(tester);
7273

7374
await tester.pumpWidget(const Directionality(

0 commit comments

Comments
 (0)