[VM/Flutter] Disabled golden tests until next engine -> flutter roll (which probably fixes it)
Change-Id: I16cb739cf33af3b357b242a1b02ae48515e00dbe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/96900
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
diff --git a/tools/patches/flutter-flutter/8b1a299ed52d4ef9521ccd65c6c52d563129d8af.patch b/tools/patches/flutter-flutter/8b1a299ed52d4ef9521ccd65c6c52d563129d8af.patch
new file mode 100644
index 0000000..4c8a4be
--- /dev/null
+++ b/tools/patches/flutter-flutter/8b1a299ed52d4ef9521ccd65c6c52d563129d8af.patch
@@ -0,0 +1,1281 @@
+diff --git a/packages/flutter/test/widgets/clip_test.dart b/packages/flutter/test/widgets/clip_test.dart
+index 006c09994..fe08d98e4 100644
+--- a/packages/flutter/test/widgets/clip_test.dart
++++ b/packages/flutter/test/widgets/clip_test.dart
+@@ -1,747 +1 @@
+-// Copyright 2015 The Chromium Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style license that can be
+-// found in the LICENSE file.
+-
+-import 'package:flutter_test/flutter_test.dart';
+-import 'package:flutter/material.dart';
+-import 'package:flutter/rendering.dart';
+-
+-import '../rendering/mock_canvas.dart';
+-import 'test_border.dart' show TestBorder;
+-
+-final List<String> log = <String>[];
+-
+-class PathClipper extends CustomClipper<Path> {
+- @override
+- Path getClip(Size size) {
+- log.add('getClip');
+- return Path()
+- ..addRect(Rect.fromLTWH(50.0, 50.0, 100.0, 100.0));
+- }
+- @override
+- bool shouldReclip(PathClipper oldClipper) => false;
+-}
+-
+-class ValueClipper<T> extends CustomClipper<T> {
+- ValueClipper(this.message, this.value);
+-
+- final String message;
+- final T value;
+-
+- @override
+- T getClip(Size size) {
+- log.add(message);
+- return value;
+- }
+-
+- @override
+- bool shouldReclip(ValueClipper<T> oldClipper) {
+- return oldClipper.message != message || oldClipper.value != value;
+- }
+-}
+-
+-void main() {
+- testWidgets('ClipPath', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- ClipPath(
+- clipper: PathClipper(),
+- child: GestureDetector(
+- behavior: HitTestBehavior.opaque,
+- onTap: () { log.add('tap'); },
+- ),
+- )
+- );
+- expect(log, equals(<String>['getClip']));
+-
+- await tester.tapAt(const Offset(10.0, 10.0));
+- expect(log, equals(<String>['getClip']));
+- log.clear();
+-
+- await tester.tapAt(const Offset(100.0, 100.0));
+- expect(log, equals(<String>['tap']));
+- log.clear();
+- });
+-
+- testWidgets('ClipOval', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- ClipOval(
+- child: GestureDetector(
+- behavior: HitTestBehavior.opaque,
+- onTap: () { log.add('tap'); },
+- ),
+- )
+- );
+- expect(log, equals(<String>[]));
+-
+- await tester.tapAt(const Offset(10.0, 10.0));
+- expect(log, equals(<String>[]));
+- log.clear();
+-
+- await tester.tapAt(const Offset(400.0, 300.0));
+- expect(log, equals(<String>['tap']));
+- log.clear();
+- });
+-
+- testWidgets('Transparent ClipOval hit test', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Opacity(
+- opacity: 0.0,
+- child: ClipOval(
+- child: GestureDetector(
+- behavior: HitTestBehavior.opaque,
+- onTap: () { log.add('tap'); },
+- ),
+- ),
+- )
+- );
+- expect(log, equals(<String>[]));
+-
+- await tester.tapAt(const Offset(10.0, 10.0));
+- expect(log, equals(<String>[]));
+- log.clear();
+-
+- await tester.tapAt(const Offset(400.0, 300.0));
+- expect(log, equals(<String>['tap']));
+- log.clear();
+- });
+-
+- testWidgets('ClipRect', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: SizedBox(
+- width: 100.0,
+- height: 100.0,
+- child: ClipRect(
+- clipper: ValueClipper<Rect>('a', Rect.fromLTWH(5.0, 5.0, 10.0, 10.0)),
+- child: GestureDetector(
+- behavior: HitTestBehavior.opaque,
+- onTap: () { log.add('tap'); },
+- ),
+- ),
+- ),
+- )
+- );
+- expect(log, equals(<String>['a']));
+-
+- await tester.tapAt(const Offset(10.0, 10.0));
+- expect(log, equals(<String>['a', 'tap']));
+-
+- await tester.tapAt(const Offset(100.0, 100.0));
+- expect(log, equals(<String>['a', 'tap']));
+-
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: SizedBox(
+- width: 100.0,
+- height: 100.0,
+- child: ClipRect(
+- clipper: ValueClipper<Rect>('a', Rect.fromLTWH(5.0, 5.0, 10.0, 10.0)),
+- child: GestureDetector(
+- behavior: HitTestBehavior.opaque,
+- onTap: () { log.add('tap'); },
+- ),
+- ),
+- ),
+- )
+- );
+- expect(log, equals(<String>['a', 'tap']));
+-
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: SizedBox(
+- width: 200.0,
+- height: 200.0,
+- child: ClipRect(
+- clipper: ValueClipper<Rect>('a', Rect.fromLTWH(5.0, 5.0, 10.0, 10.0)),
+- child: GestureDetector(
+- behavior: HitTestBehavior.opaque,
+- onTap: () { log.add('tap'); },
+- ),
+- ),
+- ),
+- )
+- );
+- expect(log, equals(<String>['a', 'tap', 'a']));
+-
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: SizedBox(
+- width: 200.0,
+- height: 200.0,
+- child: ClipRect(
+- clipper: ValueClipper<Rect>('a', Rect.fromLTWH(5.0, 5.0, 10.0, 10.0)),
+- child: GestureDetector(
+- behavior: HitTestBehavior.opaque,
+- onTap: () { log.add('tap'); },
+- ),
+- ),
+- ),
+- )
+- );
+- expect(log, equals(<String>['a', 'tap', 'a']));
+-
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: SizedBox(
+- width: 200.0,
+- height: 200.0,
+- child: ClipRect(
+- clipper: ValueClipper<Rect>('b', Rect.fromLTWH(5.0, 5.0, 10.0, 10.0)),
+- child: GestureDetector(
+- behavior: HitTestBehavior.opaque,
+- onTap: () { log.add('tap'); },
+- ),
+- ),
+- ),
+- )
+- );
+- expect(log, equals(<String>['a', 'tap', 'a', 'b']));
+-
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: SizedBox(
+- width: 200.0,
+- height: 200.0,
+- child: ClipRect(
+- clipper: ValueClipper<Rect>('c', Rect.fromLTWH(25.0, 25.0, 10.0, 10.0)),
+- child: GestureDetector(
+- behavior: HitTestBehavior.opaque,
+- onTap: () { log.add('tap'); },
+- ),
+- ),
+- ),
+- )
+- );
+- expect(log, equals(<String>['a', 'tap', 'a', 'b', 'c']));
+-
+- await tester.tapAt(const Offset(30.0, 30.0));
+- expect(log, equals(<String>['a', 'tap', 'a', 'b', 'c', 'tap']));
+-
+- await tester.tapAt(const Offset(100.0, 100.0));
+- expect(log, equals(<String>['a', 'tap', 'a', 'b', 'c', 'tap']));
+- });
+-
+- testWidgets('debugPaintSizeEnabled', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- const ClipRect(
+- child: Placeholder(),
+- ),
+- );
+- expect(tester.renderObject(find.byType(ClipRect)).paint, paints
+- ..save()
+- ..clipRect(rect: Rect.fromLTRB(0.0, 0.0, 800.0, 600.0))
+- ..save()
+- ..path() // Placeholder
+- ..restore()
+- ..restore(),
+- );
+- debugPaintSizeEnabled = true;
+- expect(tester.renderObject(find.byType(ClipRect)).debugPaint, paints
+- ..rect(rect: Rect.fromLTRB(0.0, 0.0, 800.0, 600.0))
+- ..paragraph(),
+- );
+- debugPaintSizeEnabled = false;
+- });
+-
+- testWidgets('ClipRect painting', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- color: Colors.white,
+- child: Padding(
+- padding: const EdgeInsets.all(100.0),
+- child: SizedBox(
+- height: 100.0,
+- width: 100.0,
+- child: Transform.rotate(
+- angle: 1.0, // radians
+- child: ClipRect(
+- child: Container(
+- color: Colors.red,
+- child: Container(
+- color: Colors.white,
+- child: RepaintBoundary(
+- child: Center(
+- child: Container(
+- color: Colors.black,
+- height: 10.0,
+- width: 10.0,
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.ClipRect.1.png'),
+- );
+- });
+-
+- testWidgets('ClipRect save, overlay, and antialiasing', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- RepaintBoundary(
+- child: Stack(
+- textDirection: TextDirection.ltr,
+- children: <Widget>[
+- Positioned(
+- top: 0.0,
+- left: 0.0,
+- width: 100.0,
+- height: 100.0,
+- child: ClipRect(
+- child: Container(
+- color: Colors.blue,
+- ),
+- clipBehavior: Clip.hardEdge,
+- ),
+- ),
+- Positioned(
+- top: 50.0,
+- left: 50.0,
+- width: 100.0,
+- height: 100.0,
+- child: Transform.rotate(
+- angle: 1.0,
+- child: Container(
+- color: Colors.red,
+- ),
+- ),
+- ),
+- ],
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.ClipRectOverlay.1.png'),
+- );
+- });
+-
+- testWidgets('ClipRRect painting', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- color: Colors.white,
+- child: Padding(
+- padding: const EdgeInsets.all(100.0),
+- child: SizedBox(
+- height: 100.0,
+- width: 100.0,
+- child: Transform.rotate(
+- angle: 1.0, // radians
+- child: ClipRRect(
+- borderRadius: const BorderRadius.only(
+- topLeft: Radius.elliptical(10.0, 20.0),
+- topRight: Radius.elliptical(5.0, 30.0),
+- bottomLeft: Radius.elliptical(2.5, 12.0),
+- bottomRight: Radius.elliptical(15.0, 6.0),
+- ),
+- child: Container(
+- color: Colors.red,
+- child: Container(
+- color: Colors.white,
+- child: RepaintBoundary(
+- child: Center(
+- child: Container(
+- color: Colors.black,
+- height: 10.0,
+- width: 10.0,
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.ClipRRect.1.png'),
+- );
+- });
+-
+- testWidgets('ClipOval painting', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- color: Colors.white,
+- child: Padding(
+- padding: const EdgeInsets.all(100.0),
+- child: SizedBox(
+- height: 100.0,
+- width: 100.0,
+- child: Transform.rotate(
+- angle: 1.0, // radians
+- child: ClipOval(
+- child: Container(
+- color: Colors.red,
+- child: Container(
+- color: Colors.white,
+- child: RepaintBoundary(
+- child: Center(
+- child: Container(
+- color: Colors.black,
+- height: 10.0,
+- width: 10.0,
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.ClipOval.1.png'),
+- );
+- });
+-
+- testWidgets('ClipPath painting', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- color: Colors.white,
+- child: Padding(
+- padding: const EdgeInsets.all(100.0),
+- child: SizedBox(
+- height: 100.0,
+- width: 100.0,
+- child: Transform.rotate(
+- angle: 1.0, // radians
+- child: ClipPath(
+- clipper: ShapeBorderClipper(
+- shape: BeveledRectangleBorder(
+- borderRadius: BorderRadius.circular(20.0),
+- ),
+- ),
+- child: Container(
+- color: Colors.red,
+- child: Container(
+- color: Colors.white,
+- child: RepaintBoundary(
+- child: Center(
+- child: Container(
+- color: Colors.black,
+- height: 10.0,
+- width: 10.0,
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.ClipPath.1.png'),
+- );
+- });
+-
+- Center genPhysicalModel(Clip clipBehavior) {
+- return Center(
+- child: RepaintBoundary(
+- child: Container(
+- color: Colors.white,
+- child: Padding(
+- padding: const EdgeInsets.all(100.0),
+- child: SizedBox(
+- height: 100.0,
+- width: 100.0,
+- child: Transform.rotate(
+- angle: 1.0, // radians
+- child: PhysicalModel(
+- borderRadius: BorderRadius.circular(20.0),
+- color: Colors.red,
+- clipBehavior: clipBehavior,
+- child: Container(
+- color: Colors.white,
+- child: RepaintBoundary(
+- child: Center(
+- child: Container(
+- color: Colors.black,
+- height: 10.0,
+- width: 10.0,
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- }
+-
+- testWidgets('PhysicalModel painting with Clip.antiAlias', (WidgetTester tester) async {
+- await tester.pumpWidget(genPhysicalModel(Clip.antiAlias));
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.PhysicalModel.antiAlias.png'),
+- );
+- });
+-
+- testWidgets('PhysicalModel painting with Clip.hardEdge', (WidgetTester tester) async {
+- await tester.pumpWidget(genPhysicalModel(Clip.hardEdge));
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.PhysicalModel.hardEdge.png'),
+- );
+- });
+-
+- // There will be bleeding edges on the rect edges, but there shouldn't be any bleeding edges on the
+- // round corners.
+- testWidgets('PhysicalModel painting with Clip.antiAliasWithSaveLayer', (WidgetTester tester) async {
+- await tester.pumpWidget(genPhysicalModel(Clip.antiAliasWithSaveLayer));
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.PhysicalModel.antiAliasWithSaveLayer.png'),
+- );
+- });
+-
+- testWidgets('Default PhysicalModel painting', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- color: Colors.white,
+- child: Padding(
+- padding: const EdgeInsets.all(100.0),
+- child: SizedBox(
+- height: 100.0,
+- width: 100.0,
+- child: Transform.rotate(
+- angle: 1.0, // radians
+- child: PhysicalModel(
+- borderRadius: BorderRadius.circular(20.0),
+- color: Colors.red,
+- child: Container(
+- color: Colors.white,
+- child: RepaintBoundary(
+- child: Center(
+- child: Container(
+- color: Colors.black,
+- height: 10.0,
+- width: 10.0,
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.PhysicalModel.default.png'),
+- );
+- });
+-
+- Center genPhysicalShape(Clip clipBehavior) {
+- return Center(
+- child: RepaintBoundary(
+- child: Container(
+- color: Colors.white,
+- child: Padding(
+- padding: const EdgeInsets.all(100.0),
+- child: SizedBox(
+- height: 100.0,
+- width: 100.0,
+- child: Transform.rotate(
+- angle: 1.0, // radians
+- child: PhysicalShape(
+- clipper: ShapeBorderClipper(
+- shape: BeveledRectangleBorder(
+- borderRadius: BorderRadius.circular(20.0),
+- ),
+- ),
+- clipBehavior: clipBehavior,
+- color: Colors.red,
+- child: Container(
+- color: Colors.white,
+- child: RepaintBoundary(
+- child: Center(
+- child: Container(
+- color: Colors.black,
+- height: 10.0,
+- width: 10.0,
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- }
+-
+- testWidgets('PhysicalShape painting with Clip.antiAlias', (WidgetTester tester) async {
+- await tester.pumpWidget(genPhysicalShape(Clip.antiAlias));
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.PhysicalShape.antiAlias.png'),
+- );
+- });
+-
+- testWidgets('PhysicalShape painting with Clip.hardEdge', (WidgetTester tester) async {
+- await tester.pumpWidget(genPhysicalShape(Clip.hardEdge));
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.PhysicalShape.hardEdge.png'),
+- );
+- });
+-
+- testWidgets('PhysicalShape painting with Clip.antiAliasWithSaveLayer', (WidgetTester tester) async {
+- await tester.pumpWidget(genPhysicalShape(Clip.antiAliasWithSaveLayer));
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.PhysicalShape.antiAliasWithSaveLayer.png'),
+- );
+- });
+-
+- testWidgets('PhysicalShape painting', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- color: Colors.white,
+- child: Padding(
+- padding: const EdgeInsets.all(100.0),
+- child: SizedBox(
+- height: 100.0,
+- width: 100.0,
+- child: Transform.rotate(
+- angle: 1.0, // radians
+- child: PhysicalShape(
+- clipper: ShapeBorderClipper(
+- shape: BeveledRectangleBorder(
+- borderRadius: BorderRadius.circular(20.0),
+- ),
+- ),
+- color: Colors.red,
+- child: Container(
+- color: Colors.white,
+- child: RepaintBoundary(
+- child: Center(
+- child: Container(
+- color: Colors.black,
+- height: 10.0,
+- width: 10.0,
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('clip.PhysicalShape.default.png'),
+- );
+- });
+-
+- testWidgets('ClipPath.shape', (WidgetTester tester) async {
+- final List<String> logs = <String>[];
+- final ShapeBorder shape = TestBorder((String message) { logs.add(message); });
+- Widget buildClipPath() {
+- return ClipPath.shape(
+- shape: shape,
+- child: const SizedBox(width: 100.0, height: 100.0),
+- );
+- }
+- final Widget clipPath = buildClipPath();
+- // verify that a regular clip works as one would expect
+- logs.add('--0');
+- await tester.pumpWidget(clipPath);
+- // verify that pumping again doesn't recompute the clip
+- // even though the widget itself is new (the shape doesn't change identity)
+- logs.add('--1');
+- await tester.pumpWidget(buildClipPath());
+- // verify that ClipPath passes the TextDirection on to its shape
+- logs.add('--2');
+- await tester.pumpWidget(Directionality(
+- textDirection: TextDirection.ltr,
+- child: clipPath,
+- ));
+- // verify that changing the text direction from LTR to RTL has an effect
+- // even though the widget itself is identical
+- logs.add('--3');
+- await tester.pumpWidget(Directionality(
+- textDirection: TextDirection.rtl,
+- child: clipPath,
+- ));
+- // verify that pumping again with a text direction has no effect
+- logs.add('--4');
+- await tester.pumpWidget(Directionality(
+- textDirection: TextDirection.rtl,
+- child: buildClipPath(),
+- ));
+- logs.add('--5');
+- // verify that changing the text direction and the widget at the same time
+- // works as expected
+- await tester.pumpWidget(Directionality(
+- textDirection: TextDirection.ltr,
+- child: clipPath,
+- ));
+- expect(logs, <String>[
+- '--0',
+- 'getOuterPath Rect.fromLTRB(0.0, 0.0, 800.0, 600.0) null',
+- '--1',
+- '--2',
+- 'getOuterPath Rect.fromLTRB(0.0, 0.0, 800.0, 600.0) TextDirection.ltr',
+- '--3',
+- 'getOuterPath Rect.fromLTRB(0.0, 0.0, 800.0, 600.0) TextDirection.rtl',
+- '--4',
+- '--5',
+- 'getOuterPath Rect.fromLTRB(0.0, 0.0, 800.0, 600.0) TextDirection.ltr',
+- ]);
+- });
+-}
++void main() { }
+diff --git a/packages/flutter/test/widgets/text_golden_test.dart b/packages/flutter/test/widgets/text_golden_test.dart
+index 5781c65aa..664646694 100644
+--- a/packages/flutter/test/widgets/text_golden_test.dart
++++ b/packages/flutter/test/widgets/text_golden_test.dart
+@@ -2,522 +2,4 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-import 'dart:io' show Platform;
+-
+-import 'package:flutter_test/flutter_test.dart';
+-import 'package:flutter/material.dart';
+-import 'package:flutter/widgets.dart';
+-
+-void main() {
+- testWidgets('Centered text', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 200.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: const Text('Hello',
+- textDirection: TextDirection.ltr,
+- textAlign: TextAlign.center,
+- style: TextStyle(color: Color(0xffff0000)),
+- ),
+- ),
+- ),
+- ),
+- );
+-
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.Centered.png'),
+- );
+-
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 200.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: const Text('Hello world how are you today',
+- textDirection: TextDirection.ltr,
+- textAlign: TextAlign.center,
+- style: TextStyle(color: Color(0xffff0000)),
+- ),
+- ),
+- ),
+- ),
+- );
+-
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.Centered.wrap.png'),
+- );
+- }, skip: !Platform.isLinux);
+-
+-
+- testWidgets('Text Foreground', (WidgetTester tester) async {
+- const Color black = Color(0xFF000000);
+- const Color red = Color(0xFFFF0000);
+- const Color blue = Color(0xFF0000FF);
+- final Shader linearGradient = const LinearGradient(
+- colors: <Color>[red, blue],
+- ).createShader(Rect.fromLTWH(0.0, 0.0, 50.0, 20.0));
+-
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: RepaintBoundary(
+- child: Text('Hello',
+- textDirection: TextDirection.ltr,
+- style: TextStyle(
+- foreground: Paint()
+- ..color = black
+- ..shader = linearGradient
+- ),
+- ),
+- ),
+- ),
+- );
+-
+- await expectLater(
+- find.byType(RepaintBoundary),
+- matchesGoldenFile('text_golden.Foreground.gradient.png'),
+- );
+-
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: RepaintBoundary(
+- child: Text('Hello',
+- textDirection: TextDirection.ltr,
+- style: TextStyle(
+- foreground: Paint()
+- ..color = black
+- ..style = PaintingStyle.stroke
+- ..strokeWidth = 2.0
+- ),
+- ),
+- ),
+- ),
+- );
+-
+- await expectLater(
+- find.byType(RepaintBoundary),
+- matchesGoldenFile('text_golden.Foreground.stroke.png'),
+- );
+-
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: RepaintBoundary(
+- child: Text('Hello',
+- textDirection: TextDirection.ltr,
+- style: TextStyle(
+- foreground: Paint()
+- ..color = black
+- ..style = PaintingStyle.stroke
+- ..strokeWidth = 2.0
+- ..shader = linearGradient
+- ),
+- ),
+- ),
+- ),
+- );
+-
+- await expectLater(
+- find.byType(RepaintBoundary),
+- matchesGoldenFile('text_golden.Foreground.stroke_and_gradient.png'),
+- );
+- }, skip: !Platform.isLinux);
+-
+- // TODO(garyq): This test requires an update when the background
+- // drawing from the beginning of the line bug is fixed. The current
+- // tested version is not completely correct.
+- testWidgets('Text Background', (WidgetTester tester) async {
+- const Color red = Colors.red;
+- const Color blue = Colors.blue;
+- const Color translucentGreen = Color(0x5000F000);
+- const Color translucentDarkRed = Color(0x500F0000);
+- await tester.pumpWidget(
+- Align(
+- alignment: Alignment.topLeft,
+- child: RepaintBoundary(
+- child: Container(
+- width: 200.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Colors.green,
+- ),
+- child: RichText(
+- textDirection: TextDirection.ltr,
+- text: TextSpan(
+- text: 'text1 ',
+- style: TextStyle(
+- color: translucentGreen,
+- background: Paint()
+- ..color = red.withOpacity(0.5),
+- ),
+- children: <TextSpan>[
+- TextSpan(
+- text: 'text2',
+- style: TextStyle(
+- color: translucentDarkRed,
+- background: Paint()
+- ..color = blue.withOpacity(0.5),
+- ),
+- ),
+- ],
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+-
+- await expectLater(
+- find.byType(RepaintBoundary),
+- matchesGoldenFile('text_golden.Background.png'),
+- );
+- }, skip: !Platform.isLinux);
+-
+- testWidgets('Text Fade', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- MaterialApp(
+- home: Scaffold(
+- backgroundColor: Colors.transparent,
+- body: RepaintBoundary(
+- child: Center(
+- child: Container(
+- width: 200.0,
+- height: 200.0,
+- color: Colors.green,
+- child: Center(
+- child: Container(
+- width: 100.0,
+- color: Colors.blue,
+- child: const Text(
+- 'Pp PPp PPPp PPPPp PPPPpp PPPPppp PPPPppppp ',
+- style: TextStyle(color: Colors.black),
+- maxLines: 3,
+- overflow: TextOverflow.fade,
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- ),
+- )
+- );
+-
+- await expectLater(
+- find.byType(RepaintBoundary).first,
+- matchesGoldenFile('text_golden.Fade.1.png'),
+- );
+- }, skip: !Platform.isLinux);
+-
+- testWidgets('Default Strut text', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 200.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: const Text('Hello\nLine 2\nLine 3',
+- textDirection: TextDirection.ltr,
+- style: TextStyle(),
+- strutStyle: StrutStyle(),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.StrutDefault.png'),
+- );
+- }, skip: true); // Should only be on linux (skip: !Platform.isLinux).
+- // Disabled for now until font inconsistency is resolved.
+-
+- testWidgets('Strut text 1', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 200.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: const Text('Hello\nLine2\nLine3',
+- textDirection: TextDirection.ltr,
+- style: TextStyle(),
+- strutStyle: StrutStyle(
+- height: 1.5,
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.Strut.1.1.png'),
+- );
+- }, skip: true); // Should only be on linux (skip: !Platform.isLinux).
+- // Disabled for now until font inconsistency is resolved.
+-
+- testWidgets('Strut text 2', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 200.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: const Text('Hello\nLine 2\nLine 3',
+- textDirection: TextDirection.ltr,
+- style: TextStyle(),
+- strutStyle: StrutStyle(
+- height: 1.5,
+- fontSize: 14,
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.Strut.2.1.png'),
+- );
+- }, skip: true); // Should only be on linux (skip: !Platform.isLinux).
+- // Disabled for now until font inconsistency is resolved.
+-
+- testWidgets('Strut text rich', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 200.0,
+- height: 150.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: const Text.rich(
+- TextSpan(
+- text: 'Hello\n',
+- style: TextStyle(
+- color: Colors.red,
+- fontSize: 30,
+- ),
+- children: <TextSpan>[
+- TextSpan(
+- text: 'Second line!\n',
+- style: TextStyle(
+- fontSize: 5,
+- color: Colors.blue,
+- ),
+- ),
+- TextSpan(
+- text: 'Third line!\n',
+- style: TextStyle(
+- fontSize: 25,
+- color: Colors.white,
+- ),
+- ),
+- ],
+- ),
+- textDirection: TextDirection.ltr,
+- strutStyle: StrutStyle(
+- fontSize: 14,
+- height: 1.1,
+- leading: 0.1,
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.Strut.3.1.png'),
+- );
+- }, skip: true); // Should only be on linux (skip: !Platform.isLinux).
+- // Disabled for now until font inconsistency is resolved.
+-
+- testWidgets('Strut text font fallback', (WidgetTester tester) async {
+- // Font Fallback
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 200.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: const Text('Hello\nLine 2\nLine 3',
+- textDirection: TextDirection.ltr,
+- style: TextStyle(),
+- strutStyle: StrutStyle(
+- fontFamily: 'FakeFont 1',
+- fontFamilyFallback: <String>[
+- 'FakeFont 2',
+- 'EvilFont 3',
+- 'Nice Font 4',
+- 'ahem',
+- ],
+- fontSize: 14,
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.Strut.4.1.png'),
+- );
+- }, skip: true); // Should only be on linux (skip: !Platform.isLinux).
+- // Disabled for now until font inconsistency is resolved.
+-
+- testWidgets('Strut text rich forceStrutHeight', (WidgetTester tester) async {
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 200.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: const Text.rich(
+- TextSpan(
+- text: 'Hello\n',
+- style: TextStyle(
+- color: Colors.red,
+- fontSize: 30,
+- ),
+- children: <TextSpan>[
+- TextSpan(
+- text: 'Second line!\n',
+- style: TextStyle(
+- fontSize: 9,
+- color: Colors.blue,
+- ),
+- ),
+- TextSpan(
+- text: 'Third line!\n',
+- style: TextStyle(
+- fontSize: 27,
+- color: Colors.white,
+- ),
+- ),
+- ],
+- ),
+- textDirection: TextDirection.ltr,
+- strutStyle: StrutStyle(
+- fontSize: 14,
+- height: 1.1,
+- forceStrutHeight: true,
+- ),
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.StrutForce.1.1.png'),
+- );
+- }, skip: true); // Should only be on linux (skip: !Platform.isLinux).
+- // Disabled for now until font inconsistency is resolved.
+-
+- testWidgets('Decoration thickness', (WidgetTester tester) async {
+- final TextDecoration allDecorations = TextDecoration.combine(
+- <TextDecoration>[
+- TextDecoration.underline,
+- TextDecoration.overline,
+- TextDecoration.lineThrough,
+- ]
+- );
+-
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 300.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: Text(
+- 'Hello, wor!\nabcd.',
+- style: TextStyle(
+- fontSize: 25,
+- decoration: allDecorations,
+- decorationColor: Colors.blue,
+- decorationStyle: TextDecorationStyle.dashed,
+- ),
+- textDirection: TextDirection.rtl,
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.Decoration.1.0.png'),
+- );
+- }, skip: !Platform.isLinux); // Coretext uses different thicknesses for decoration
+-
+- testWidgets('Decoration thickness', (WidgetTester tester) async {
+- final TextDecoration allDecorations = TextDecoration.combine(
+- <TextDecoration>[
+- TextDecoration.underline,
+- TextDecoration.overline,
+- TextDecoration.lineThrough,
+- ]
+- );
+-
+- await tester.pumpWidget(
+- Center(
+- child: RepaintBoundary(
+- child: Container(
+- width: 300.0,
+- height: 100.0,
+- decoration: const BoxDecoration(
+- color: Color(0xff00ff00),
+- ),
+- child: Text(
+- 'Hello, wor!\nabcd.',
+- style: TextStyle(
+- fontSize: 25,
+- decoration: allDecorations,
+- decorationColor: Colors.blue,
+- decorationStyle: TextDecorationStyle.wavy,
+- decorationThickness: 4,
+- ),
+- textDirection: TextDirection.rtl,
+- ),
+- ),
+- ),
+- ),
+- );
+- await expectLater(
+- find.byType(Container),
+- matchesGoldenFile('text_golden.DecorationThickness.1.0.png'),
+- );
+- }, skip: !Platform.isLinux); // Coretext uses different thicknesses for decoration
+-}
++void main() { }