Skip to content

Commit e8b397c

Browse files
authored
Setup leak tracking regression for material. (flutter#130169)
1 parent d460804 commit e8b397c

File tree

112 files changed

+1951
-1791
lines changed

Some content is hidden

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

112 files changed

+1951
-1791
lines changed

packages/flutter/test/material/action_chip_test.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ void checkChipMaterialClipBehavior(WidgetTester tester, Clip clipBehavior) {
6565
}
6666

6767
void main() {
68-
testWidgets('ActionChip defaults', (WidgetTester tester) async {
68+
testWidgetsWithLeakTracking('ActionChip defaults', (WidgetTester tester) async {
6969
final ThemeData theme = ThemeData(useMaterial3: true);
7070
const String label = 'action chip';
7171

@@ -136,7 +136,7 @@ void main() {
136136
expect(decoration.color, null);
137137
});
138138

139-
testWidgets('ActionChip.elevated defaults', (WidgetTester tester) async {
139+
testWidgetsWithLeakTracking('ActionChip.elevated defaults', (WidgetTester tester) async {
140140
final ThemeData theme = ThemeData(useMaterial3: true);
141141
const String label = 'action chip';
142142

@@ -207,7 +207,7 @@ void main() {
207207
expect(decoration.color, theme.colorScheme.onSurface.withOpacity(0.12));
208208
});
209209

210-
testWidgets('ActionChip.color resolves material states', (WidgetTester tester) async {
210+
testWidgetsWithLeakTracking('ActionChip.color resolves material states', (WidgetTester tester) async {
211211
const Color disabledColor = Color(0xff00ff00);
212212
const Color backgroundColor = Color(0xff0000ff);
213213
final MaterialStateProperty<Color?> color = MaterialStateProperty.resolveWith((Set<MaterialState> states) {
@@ -266,7 +266,7 @@ void main() {
266266
);
267267
});
268268

269-
testWidgets('ActionChip uses provided state color properties', (WidgetTester tester) async {
269+
testWidgetsWithLeakTracking('ActionChip uses provided state color properties', (WidgetTester tester) async {
270270
const Color disabledColor = Color(0xff00ff00);
271271
const Color backgroundColor = Color(0xff0000ff);
272272
Widget buildApp({ required bool enabled, required bool selected }) {

packages/flutter/test/material/action_icons_theme_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ void main() {
1515
const ActionIconThemeData().copyWith().hashCode);
1616
});
1717

18-
testWidgets('ActionIconThemeData copyWith overrides all properties', (WidgetTester tester) async {
18+
testWidgetsWithLeakTracking('ActionIconThemeData copyWith overrides all properties', (WidgetTester tester) async {
1919
// This is a regression test for https://github.com/flutter/flutter/issues/126762.
2020
Widget originalButtonBuilder(BuildContext context) {
2121
return const SizedBox();

packages/flutter/test/material/animated_icons_test.dart

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'dart:math' as math show pi;
1010
import 'package:flutter/material.dart';
1111
import 'package:flutter_test/flutter_test.dart';
1212

13+
import '../foundation/leak_tracking.dart';
1314
import '../widgets/semantics_tester.dart';
1415

1516
class MockCanvas extends Fake implements Canvas {
@@ -95,7 +96,7 @@ class RecordedScale extends RecordedCanvasCall {
9596
}
9697

9798
void main() {
98-
testWidgets('IconTheme color', (WidgetTester tester) async {
99+
testWidgetsWithLeakTracking('IconTheme color', (WidgetTester tester) async {
99100
await tester.pumpWidget(
100101
const Directionality(
101102
textDirection: TextDirection.ltr,
@@ -116,7 +117,7 @@ void main() {
116117
expect(canvas.capturedPaint, hasColor(0xFF666666));
117118
});
118119

119-
testWidgets('IconTheme opacity', (WidgetTester tester) async {
120+
testWidgetsWithLeakTracking('IconTheme opacity', (WidgetTester tester) async {
120121
await tester.pumpWidget(
121122
const Directionality(
122123
textDirection: TextDirection.ltr,
@@ -138,7 +139,7 @@ void main() {
138139
expect(canvas.capturedPaint, hasColor(0x80666666));
139140
});
140141

141-
testWidgets('color overrides IconTheme color', (WidgetTester tester) async {
142+
testWidgetsWithLeakTracking('color overrides IconTheme color', (WidgetTester tester) async {
142143
await tester.pumpWidget(
143144
const Directionality(
144145
textDirection: TextDirection.ltr,
@@ -160,7 +161,7 @@ void main() {
160161
expect(canvas.capturedPaint, hasColor(0xFF0000FF));
161162
});
162163

163-
testWidgets('IconTheme size', (WidgetTester tester) async {
164+
testWidgetsWithLeakTracking('IconTheme size', (WidgetTester tester) async {
164165
await tester.pumpWidget(
165166
const Directionality(
166167
textDirection: TextDirection.ltr,
@@ -184,7 +185,7 @@ void main() {
184185
expect(canvas.capturedSy, 0.25);
185186
});
186187

187-
testWidgets('size overridesIconTheme size', (WidgetTester tester) async {
188+
testWidgetsWithLeakTracking('size overridesIconTheme size', (WidgetTester tester) async {
188189
await tester.pumpWidget(
189190
const Directionality(
190191
textDirection: TextDirection.ltr,
@@ -209,7 +210,7 @@ void main() {
209210
expect(canvas.capturedSy, 2);
210211
});
211212

212-
testWidgets('Semantic label', (WidgetTester tester) async {
213+
testWidgetsWithLeakTracking('Semantic label', (WidgetTester tester) async {
213214
final SemanticsTester semantics = SemanticsTester(tester);
214215

215216
await tester.pumpWidget(
@@ -229,7 +230,7 @@ void main() {
229230
semantics.dispose();
230231
});
231232

232-
testWidgets('Inherited text direction rtl', (WidgetTester tester) async {
233+
testWidgetsWithLeakTracking('Inherited text direction rtl', (WidgetTester tester) async {
233234
await tester.pumpWidget(
234235
const Directionality(
235236
textDirection: TextDirection.rtl,
@@ -258,7 +259,7 @@ void main() {
258259
matchesGoldenFile('animated_icons_test.icon.rtl.png'));
259260
});
260261

261-
testWidgets('Inherited text direction ltr', (WidgetTester tester) async {
262+
testWidgetsWithLeakTracking('Inherited text direction ltr', (WidgetTester tester) async {
262263
await tester.pumpWidget(
263264
const Directionality(
264265
textDirection: TextDirection.ltr,
@@ -285,7 +286,7 @@ void main() {
285286
matchesGoldenFile('animated_icons_test.icon.ltr.png'));
286287
});
287288

288-
testWidgets('Inherited text direction overridden', (WidgetTester tester) async {
289+
testWidgetsWithLeakTracking('Inherited text direction overridden', (WidgetTester tester) async {
289290
await tester.pumpWidget(
290291
const Directionality(
291292
textDirection: TextDirection.ltr,
@@ -311,7 +312,7 @@ void main() {
311312
]);
312313
});
313314

314-
testWidgets('Direction has no effect on position of widget', (WidgetTester tester) async {
315+
testWidgetsWithLeakTracking('Direction has no effect on position of widget', (WidgetTester tester) async {
315316
const AnimatedIcon icon = AnimatedIcon(
316317
progress: AlwaysStoppedAnimation<double>(0.0),
317318
icon: AnimatedIcons.arrow_menu,

packages/flutter/test/material/app_builder_test.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
import 'package:flutter/material.dart';
66
import 'package:flutter_test/flutter_test.dart';
77

8+
import '../foundation/leak_tracking.dart';
9+
810
void main() {
9-
testWidgets("builder doesn't get called if app doesn't change", (WidgetTester tester) async {
11+
testWidgetsWithLeakTracking("builder doesn't get called if app doesn't change", (WidgetTester tester) async {
1012
final List<String> log = <String>[];
1113
final Widget app = MaterialApp(
1214
home: const Placeholder(),
@@ -33,7 +35,7 @@ void main() {
3335
expect(log, <String>['build']);
3436
});
3537

36-
testWidgets("builder doesn't get called if app doesn't change", (WidgetTester tester) async {
38+
testWidgetsWithLeakTracking("builder doesn't get called if app doesn't change", (WidgetTester tester) async {
3739
final List<String> log = <String>[];
3840
await tester.pumpWidget(
3941
MaterialApp(

packages/flutter/test/material/back_button_test.dart

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import 'package:flutter/foundation.dart';
66
import 'package:flutter/material.dart';
77
import 'package:flutter_test/flutter_test.dart';
88

9+
import '../foundation/leak_tracking.dart';
10+
911
void main() {
1012
testWidgets('BackButton control test', (WidgetTester tester) async {
1113
await tester.pumpWidget(
@@ -34,7 +36,7 @@ void main() {
3436
expect(find.text('Home'), findsOneWidget);
3537
});
3638

37-
testWidgets('BackButton onPressed overrides default pop behavior', (WidgetTester tester) async {
39+
testWidgetsWithLeakTracking('BackButton onPressed overrides default pop behavior', (WidgetTester tester) async {
3840
bool customCallbackWasCalled = false;
3941
await tester.pumpWidget(
4042
MaterialApp(
@@ -67,7 +69,7 @@ void main() {
6769
expect(customCallbackWasCalled, true);
6870
});
6971

70-
testWidgets('BackButton icon', (WidgetTester tester) async {
72+
testWidgetsWithLeakTracking('BackButton icon', (WidgetTester tester) async {
7173
final Key androidKey = UniqueKey();
7274
final Key iOSKey = UniqueKey();
7375
final Key linuxKey = UniqueKey();
@@ -115,7 +117,7 @@ void main() {
115117
expect(windowsIcon.icon == androidIcon.icon, isTrue);
116118
});
117119

118-
testWidgets('BackButton color', (WidgetTester tester) async {
120+
testWidgetsWithLeakTracking('BackButton color', (WidgetTester tester) async {
119121
await tester.pumpWidget(
120122
const MaterialApp(
121123
home: Material(
@@ -133,7 +135,7 @@ void main() {
133135
expect(iconText.text.style!.color, Colors.red);
134136
});
135137

136-
testWidgets('BackButton color with ButtonStyle', (WidgetTester tester) async {
138+
testWidgetsWithLeakTracking('BackButton color with ButtonStyle', (WidgetTester tester) async {
137139
await tester.pumpWidget(
138140
MaterialApp(
139141
theme: ThemeData(useMaterial3: true),
@@ -154,7 +156,7 @@ void main() {
154156
expect(iconText.text.style!.color, Colors.red);
155157
});
156158

157-
testWidgets('BackButton.style.iconColor parameter overrides BackButton.color', (WidgetTester tester) async {
159+
testWidgetsWithLeakTracking('BackButton.style.iconColor parameter overrides BackButton.color', (WidgetTester tester) async {
158160
await tester.pumpWidget(
159161
MaterialApp(
160162
theme: ThemeData(useMaterial3: true),
@@ -177,7 +179,7 @@ void main() {
177179
expect(iconText.text.style!.color, Colors.red);
178180
});
179181

180-
testWidgets('BackButton semantics', (WidgetTester tester) async {
182+
testWidgetsWithLeakTracking('BackButton semantics', (WidgetTester tester) async {
181183
final SemanticsHandle handle = tester.ensureSemantics();
182184
await tester.pumpWidget(
183185
MaterialApp(
@@ -220,7 +222,7 @@ void main() {
220222
handle.dispose();
221223
}, variant: TargetPlatformVariant.all());
222224

223-
testWidgets('CloseButton semantics', (WidgetTester tester) async {
225+
testWidgetsWithLeakTracking('CloseButton semantics', (WidgetTester tester) async {
224226
final SemanticsHandle handle = tester.ensureSemantics();
225227
await tester.pumpWidget(
226228
MaterialApp(
@@ -263,7 +265,7 @@ void main() {
263265
handle.dispose();
264266
}, variant: TargetPlatformVariant.all());
265267

266-
testWidgets('CloseButton color', (WidgetTester tester) async {
268+
testWidgetsWithLeakTracking('CloseButton color', (WidgetTester tester) async {
267269
await tester.pumpWidget(
268270
const MaterialApp(
269271
home: Material(
@@ -281,7 +283,7 @@ void main() {
281283
expect(iconText.text.style!.color, Colors.red);
282284
});
283285

284-
testWidgets('CloseButton color with ButtonStyle', (WidgetTester tester) async {
286+
testWidgetsWithLeakTracking('CloseButton color with ButtonStyle', (WidgetTester tester) async {
285287
await tester.pumpWidget(
286288
MaterialApp(
287289
theme: ThemeData(useMaterial3: true),
@@ -302,7 +304,7 @@ void main() {
302304
expect(iconText.text.style!.color, Colors.red);
303305
});
304306

305-
testWidgets('CloseButton.style.iconColor parameter overrides CloseButton.color', (WidgetTester tester) async {
307+
testWidgetsWithLeakTracking('CloseButton.style.iconColor parameter overrides CloseButton.color', (WidgetTester tester) async {
306308
await tester.pumpWidget(
307309
MaterialApp(
308310
theme: ThemeData(useMaterial3: true),
@@ -325,7 +327,7 @@ void main() {
325327
expect(iconText.text.style!.color, Colors.red);
326328
});
327329

328-
testWidgets('CloseButton onPressed overrides default pop behavior', (WidgetTester tester) async {
330+
testWidgetsWithLeakTracking('CloseButton onPressed overrides default pop behavior', (WidgetTester tester) async {
329331
bool customCallbackWasCalled = false;
330332
await tester.pumpWidget(
331333
MaterialApp(

packages/flutter/test/material/badge_test.dart

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ import 'package:flutter/material.dart';
88
import 'package:flutter/rendering.dart';
99
import 'package:flutter_test/flutter_test.dart';
1010

11+
import '../foundation/leak_tracking.dart';
1112
import '../rendering/mock_canvas.dart';
1213

1314

1415
void main() {
15-
testWidgets('Large Badge defaults', (WidgetTester tester) async {
16+
testWidgetsWithLeakTracking('Large Badge defaults', (WidgetTester tester) async {
1617
late final ThemeData theme;
1718

1819
await tester.pumpWidget(
@@ -58,7 +59,7 @@ void main() {
5859
expect(box, paints..rrect(rrect: rrect, color: theme.colorScheme.error));
5960
});
6061

61-
testWidgets('Large Badge defaults with RTL', (WidgetTester tester) async {
62+
testWidgetsWithLeakTracking('Large Badge defaults with RTL', (WidgetTester tester) async {
6263
late final ThemeData theme;
6364

6465
await tester.pumpWidget(
@@ -101,7 +102,7 @@ void main() {
101102
});
102103

103104
// Essentially the same as 'Large Badge defaults'
104-
testWidgets('Badge.count', (WidgetTester tester) async {
105+
testWidgetsWithLeakTracking('Badge.count', (WidgetTester tester) async {
105106
late final ThemeData theme;
106107

107108
Widget buildFrame(int count) {
@@ -160,7 +161,7 @@ void main() {
160161
expect(find.text('999+'), findsOneWidget);
161162
});
162163

163-
testWidgets('Small Badge defaults', (WidgetTester tester) async {
164+
testWidgetsWithLeakTracking('Small Badge defaults', (WidgetTester tester) async {
164165
final ThemeData theme = ThemeData.light(useMaterial3: true);
165166

166167
await tester.pumpWidget(
@@ -191,7 +192,7 @@ void main() {
191192
expect(box, paints..rrect(rrect: RRect.fromLTRBR(18, 0, 24, 6, const Radius.circular(3)), color: theme.colorScheme.error));
192193
});
193194

194-
testWidgets('Small Badge RTL defaults', (WidgetTester tester) async {
195+
testWidgetsWithLeakTracking('Small Badge RTL defaults', (WidgetTester tester) async {
195196
final ThemeData theme = ThemeData.light(useMaterial3: true);
196197

197198
await tester.pumpWidget(
@@ -224,7 +225,7 @@ void main() {
224225
expect(box, paints..rrect(rrect: RRect.fromLTRBR(0, 0, 6, 6, const Radius.circular(3)), color: theme.colorScheme.error));
225226
});
226227

227-
testWidgets('Large Badge textStyle and colors', (WidgetTester tester) async {
228+
testWidgetsWithLeakTracking('Large Badge textStyle and colors', (WidgetTester tester) async {
228229
final ThemeData theme = ThemeData.light(useMaterial3: true);
229230
const Color green = Color(0xff00ff00);
230231
const Color black = Color(0xff000000);
@@ -251,7 +252,7 @@ void main() {
251252
expect(tester.renderObject(find.byType(Badge)), paints..rrect(color: black));
252253
});
253254

254-
testWidgets('isLabelVisible', (WidgetTester tester) async {
255+
testWidgetsWithLeakTracking('isLabelVisible', (WidgetTester tester) async {
255256
await tester.pumpWidget(
256257
MaterialApp(
257258
theme: ThemeData.light(useMaterial3: true),
@@ -275,7 +276,7 @@ void main() {
275276
expect(box, isNot(paints..rrect()));
276277
});
277278

278-
testWidgets('Large Badge alignment', (WidgetTester tester) async {
279+
testWidgetsWithLeakTracking('Large Badge alignment', (WidgetTester tester) async {
279280
const Radius badgeRadius = Radius.circular(8);
280281

281282
Widget buildFrame(Alignment alignment, [Offset offset = Offset.zero]) {
@@ -350,7 +351,7 @@ void main() {
350351
expect(box, paints..rrect(rrect: RRect.fromLTRBR(200 - 16, 200 - 16, 200, 200, badgeRadius).shift(offset)));
351352
});
352353

353-
testWidgets('Small Badge alignment', (WidgetTester tester) async {
354+
testWidgetsWithLeakTracking('Small Badge alignment', (WidgetTester tester) async {
354355
const Radius badgeRadius = Radius.circular(3);
355356

356357
Widget buildFrame(Alignment alignment, [Offset offset = Offset.zero]) {

0 commit comments

Comments
 (0)