Skip to content

Commit 6a92b93

Browse files
authored
Fix state leak in rendering/editable_test; remove no-shuffle (#123806)
Fix state leak in rendering/editable_test (framework shuffle-all 2/n)
1 parent 1899c8f commit 6a92b93

1 file changed

Lines changed: 22 additions & 24 deletions

File tree

packages/flutter/test/rendering/editable_test.dart

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,6 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
// TODO(gspencergoog): Remove this tag once this test's state leaks/test
6-
// dependencies have been fixed.
7-
// https://github.com/flutter/flutter/issues/85160
8-
// Fails with "flutter test --test-randomize-ordering-seed=20210704"
9-
@Tags(<String>['no-shuffle'])
10-
library;
11-
125
import 'package:flutter/foundation.dart';
136
import 'package:flutter/gestures.dart';
147
import 'package:flutter/material.dart';
@@ -990,7 +983,6 @@ void main() {
990983
setUp(() { EditableText.debugDeterministicCursor = true; });
991984
tearDown(() {
992985
EditableText.debugDeterministicCursor = false;
993-
_TestRenderEditablePainter.paintHistory.clear();
994986
editable.foregroundPainter = null;
995987
editable.painter = null;
996988
editable.paintCount = 0;
@@ -1080,24 +1072,27 @@ void main() {
10801072
test('swapping painters', () {
10811073
layout(editable, constraints: BoxConstraints.loose(const Size(100, 100)));
10821074

1083-
final _TestRenderEditablePainter painter1 = _TestRenderEditablePainter();
1084-
final _TestRenderEditablePainter painter2 = _TestRenderEditablePainter();
1075+
final _TestRenderEditablePainter painter1 = _TestRenderEditablePainter(color: const Color(0x01234567));
1076+
final _TestRenderEditablePainter painter2 = _TestRenderEditablePainter(color: const Color(0x76543210));
10851077

10861078
editable.painter = painter1;
10871079
editable.foregroundPainter = painter2;
1088-
pumpFrame(phase: EnginePhase.paint);
10891080
expect(
1090-
_TestRenderEditablePainter.paintHistory,
1091-
<_TestRenderEditablePainter>[painter1, painter2],
1081+
(Canvas canvas) => editable.paint(TestRecordingPaintingContext(canvas), Offset.zero),
1082+
paints
1083+
..rect(rect: const Rect.fromLTRB(1, 1, 1, 1), color: painter1.color)
1084+
..paragraph()
1085+
..rect(rect: const Rect.fromLTRB(1, 1, 1, 1), color: painter2.color),
10921086
);
10931087

1094-
_TestRenderEditablePainter.paintHistory.clear();
10951088
editable.painter = painter2;
10961089
editable.foregroundPainter = painter1;
1097-
pumpFrame(phase: EnginePhase.paint);
10981090
expect(
1099-
_TestRenderEditablePainter.paintHistory,
1100-
<_TestRenderEditablePainter>[painter2, painter1],
1091+
(Canvas canvas) => editable.paint(TestRecordingPaintingContext(canvas), Offset.zero),
1092+
paints
1093+
..rect(rect: const Rect.fromLTRB(1, 1, 1, 1), color: painter2.color)
1094+
..paragraph()
1095+
..rect(rect: const Rect.fromLTRB(1, 1, 1, 1), color: painter1.color),
11011096
);
11021097
});
11031098

@@ -1112,11 +1107,8 @@ void main() {
11121107
errorDetails = TestRenderingFlutterBinding.instance.takeFlutterErrorDetails();
11131108
});
11141109
expect(errorDetails, isNull);
1110+
expect(painter.paintCount, 2);
11151111

1116-
expect(
1117-
_TestRenderEditablePainter.paintHistory,
1118-
<_TestRenderEditablePainter>[painter, painter],
1119-
);
11201112
expect(
11211113
(Canvas canvas) => editable.paint(TestRecordingPaintingContext(canvas), Offset.zero),
11221114
paints
@@ -1125,6 +1117,7 @@ void main() {
11251117
..rect(rect: const Rect.fromLTRB(1, 1, 1, 1), color: const Color(0x12345678)),
11261118
);
11271119
});
1120+
11281121
test('does not repaint the render editable when custom painters need repaint', () {
11291122
layout(editable, constraints: BoxConstraints.loose(const Size(100, 100)));
11301123

@@ -1789,15 +1782,17 @@ class _TestRenderEditable extends RenderEditable {
17891782
}
17901783

17911784
class _TestRenderEditablePainter extends RenderEditablePainter {
1785+
_TestRenderEditablePainter({this.color = const Color(0x12345678)});
1786+
1787+
final Color color;
1788+
17921789
bool repaint = true;
17931790
int paintCount = 0;
1794-
static final List<_TestRenderEditablePainter> paintHistory = <_TestRenderEditablePainter>[];
17951791

17961792
@override
17971793
void paint(Canvas canvas, Size size, RenderEditable renderEditable) {
17981794
paintCount += 1;
1799-
canvas.drawRect(const Rect.fromLTRB(1, 1, 1, 1), Paint()..color = const Color(0x12345678));
1800-
paintHistory.add(this);
1795+
canvas.drawRect(const Rect.fromLTRB(1, 1, 1, 1), Paint()..color = color);
18011796
}
18021797

18031798
@override
@@ -1806,4 +1801,7 @@ class _TestRenderEditablePainter extends RenderEditablePainter {
18061801
void markNeedsPaint() {
18071802
notifyListeners();
18081803
}
1804+
1805+
@override
1806+
String toString() => '_TestRenderEditablePainter#${shortHash(this)}';
18091807
}

0 commit comments

Comments
 (0)