| // 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. |
| |
| // @dart = 2.8 |
| |
| 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'; |
| |
| void main() { |
| /// Verifies that `dart migrate` will run successfully on the default `flutter create` |
| /// template. |
| testWithoutContext('dart migrate succeeds on flutter create template', () async { |
| Directory tempDir; |
| try { |
| tempDir = await _createProject(tempDir); |
| await _migrate(tempDir); |
| await _analyze(tempDir); |
| } finally { |
| tempDir?.deleteSync(recursive: true); |
| } |
| }); |
| |
| /// Verifies that `dart migrate` will run successfully on the module template |
| /// used by `flutter create --template=module`. |
| testWithoutContext('dart migrate succeeds on module template', () async { |
| Directory tempDir; |
| try { |
| tempDir = await _createProject(tempDir, <String>['--template=module']); |
| await _migrate(tempDir); |
| await _analyze(tempDir); |
| } finally { |
| tempDir?.deleteSync(recursive: true); |
| } |
| }, timeout: const Timeout(Duration(minutes: 1))); |
| |
| /// Verifies that `dart migrate` will run successfully on the module template |
| /// used by `flutter create --template=plugin`. |
| testWithoutContext('dart migrate succeeds on plugin template', () async { |
| Directory tempDir; |
| try { |
| tempDir = await _createProject(tempDir, <String>['--template=plugin']); |
| await _migrate(tempDir); |
| await _analyze(tempDir); |
| } finally { |
| tempDir?.deleteSync(recursive: true); |
| } |
| }); |
| |
| /// Verifies that `dart migrate` will run successfully on the module template |
| /// used by `flutter create --template=package`. |
| testWithoutContext('dart migrate succeeds on package template', () async { |
| Directory tempDir; |
| try { |
| tempDir = await _createProject(tempDir, <String>['--template=package']); |
| await _migrate(tempDir); |
| await _analyze(tempDir); |
| } finally { |
| tempDir?.deleteSync(recursive: true); |
| } |
| }); |
| } |
| |
| Future<Directory> _createProject(Directory tempDir, [List<String> extraAgs]) async { |
| tempDir = createResolvedTempDirectorySync('dart_migrate_test.'); |
| final ProcessResult createResult = await processManager.run(<String>[ |
| _flutterBin, |
| 'create', |
| if (extraAgs != null) |
| ...extraAgs, |
| 'foo', |
| ], workingDirectory: tempDir.path); |
| if (createResult.exitCode != 0) { |
| fail('flutter create did not work: ${createResult.stdout}${createResult.stderr}'); |
| } |
| return tempDir; |
| } |
| |
| Future<void> _migrate(Directory tempDir) async { |
| 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}'); |
| } |
| } |
| |
| Future<void> _analyze(Directory tempDir) async { |
| 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}'); |
| } |
| } |
| |
| String get _flutterBin => fileSystem.path.join(getFlutterRoot(), 'bin', platform.isWindows ? 'flutter.bat' : 'flutter'); |
| String get _dartBin => fileSystem.path.join(getFlutterRoot(), 'bin', platform.isWindows ? 'dart.bat' : 'dart'); |