Extract TestBorder into a utility file (#25888)

diff --git a/packages/flutter/test/material/material_test.dart b/packages/flutter/test/material/material_test.dart
index 3900a70..b8dbb5d 100644
--- a/packages/flutter/test/material/material_test.dart
+++ b/packages/flutter/test/material/material_test.dart
@@ -8,7 +8,7 @@
 import 'package:flutter_test/flutter_test.dart';
 
 import '../rendering/mock_canvas.dart';
-import '../widgets/shape_decoration_test.dart' show TestBorder;
+import '../widgets/test_border.dart' show TestBorder;
 
 class NotifyMaterial extends StatelessWidget {
   @override
diff --git a/packages/flutter/test/widgets/clip_test.dart b/packages/flutter/test/widgets/clip_test.dart
index ef695a1..2e58ce5 100644
--- a/packages/flutter/test/widgets/clip_test.dart
+++ b/packages/flutter/test/widgets/clip_test.dart
@@ -7,7 +7,7 @@
 import 'package:flutter/rendering.dart';
 
 import '../rendering/mock_canvas.dart';
-import 'shape_decoration_test.dart' show TestBorder;
+import 'test_border.dart' show TestBorder;
 
 final List<String> log = <String>[];
 
diff --git a/packages/flutter/test/widgets/shape_decoration_test.dart b/packages/flutter/test/widgets/shape_decoration_test.dart
index 1e34c96..79a402b0 100644
--- a/packages/flutter/test/widgets/shape_decoration_test.dart
+++ b/packages/flutter/test/widgets/shape_decoration_test.dart
@@ -11,6 +11,7 @@
 import '../painting/image_data.dart';
 import '../painting/mocks_for_image_cache.dart';
 import '../rendering/mock_canvas.dart';
+import 'test_border.dart' show TestBorder;
 
 Future<void> main() async {
   final ui.Image rawImage = await decodeImageFromList(Uint8List.fromList(kTransparentImage));
@@ -104,34 +105,3 @@
     );
   });
 }
-
-typedef Logger = void Function(String caller);
-
-class TestBorder extends ShapeBorder {
-  const TestBorder(this.onLog) : assert(onLog != null);
-
-  final Logger onLog;
-
-  @override
-  EdgeInsetsGeometry get dimensions => const EdgeInsetsDirectional.only(start: 1.0);
-
-  @override
-  ShapeBorder scale(double t) => TestBorder(onLog);
-
-  @override
-  Path getInnerPath(Rect rect, { TextDirection textDirection }) {
-    onLog('getInnerPath $rect $textDirection');
-    return Path();
-  }
-
-  @override
-  Path getOuterPath(Rect rect, { TextDirection textDirection }) {
-    onLog('getOuterPath $rect $textDirection');
-    return Path();
-  }
-
-  @override
-  void paint(Canvas canvas, Rect rect, { TextDirection textDirection }) {
-    onLog('paint $rect $textDirection');
-  }
-}
diff --git a/packages/flutter/test/widgets/test_border.dart b/packages/flutter/test/widgets/test_border.dart
new file mode 100644
index 0000000..1f3c155
--- /dev/null
+++ b/packages/flutter/test/widgets/test_border.dart
@@ -0,0 +1,33 @@
+import 'package:flutter/material.dart';
+
+typedef Logger = void Function(String caller);
+
+class TestBorder extends ShapeBorder {
+  const TestBorder(this.onLog) : assert(onLog != null);
+
+  final Logger onLog;
+
+  @override
+  EdgeInsetsGeometry get dimensions => const EdgeInsetsDirectional.only(start: 1.0);
+
+  @override
+  ShapeBorder scale(double t) => TestBorder(onLog);
+
+  @override
+  Path getInnerPath(Rect rect, { TextDirection textDirection }) {
+    onLog('getInnerPath $rect $textDirection');
+    return Path();
+  }
+
+  @override
+  Path getOuterPath(Rect rect, { TextDirection textDirection }) {
+    onLog('getOuterPath $rect $textDirection');
+    return Path();
+  }
+
+  @override
+  void paint(Canvas canvas, Rect rect, { TextDirection textDirection }) {
+    onLog('paint $rect $textDirection');
+  }
+}
+