[flutter_tools] verify successful dart migrate (#74079)

diff --git a/packages/flutter_tools/test/integration.shard/migrate_test.dart b/packages/flutter_tools/test/integration.shard/migrate_test.dart
new file mode 100644
index 0000000..04bb9e0
--- /dev/null
+++ b/packages/flutter_tools/test/integration.shard/migrate_test.dart
@@ -0,0 +1,50 @@
+// Copyright 2014 The Flutter 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_tools/src/base/file_system.dart';
+import 'package:flutter_tools/src/base/io.dart';
+
+import '../src/common.dart';
+import 'test_utils.dart';
+
+/// Verifies that `dart migrate` will run successfuly on the default `flutter create`
+/// template.
+void main() {
+  testWithoutContext('dart migrate succeedes on flutter create template', () async {
+    final String flutterBin = fileSystem.path.join(getFlutterRoot(), 'bin', platform.isWindows ? 'flutter.bat' : 'flutter');
+    final String dartBin = fileSystem.path.join(getFlutterRoot(), 'bin', platform.isWindows ? 'dart.bat' : 'dart');
+
+    Directory tempDir;
+    try {
+      tempDir = createResolvedTempDirectorySync('dart_migrate_test.');
+      final ProcessResult createResult = await processManager.run(<String>[
+        flutterBin,
+        'create',
+        'foo',
+      ], workingDirectory: tempDir.path);
+      if (createResult.exitCode != 0) {
+        fail('flutter create did not work: ${createResult.stdout}${createResult.stderr}');
+      }
+
+      final ProcessResult migrateResult = await processManager.run(<String>[
+        dartBin,
+        'migrate',
+        '--apply-changes',
+      ], workingDirectory: fileSystem.path.join(tempDir.path, 'foo'));
+      if (migrateResult.exitCode != 0) {
+        fail('dart migrate did not work: ${migrateResult.stdout}${migrateResult.stderr}');
+      }
+
+      final ProcessResult analyzeResult = await processManager.run(<String>[
+        flutterBin,
+        'analyze',
+      ], workingDirectory: fileSystem.path.join(tempDir.path, 'foo'));
+      if (analyzeResult.exitCode != 0) {
+        fail('flutter analyze had errors: ${analyzeResult.stdout}${analyzeResult.stderr}');
+      }
+    } finally {
+      tempDir?.deleteSync(recursive: true);
+    }
+  });
+}