diff --git a/packages/flutter_tools/lib/src/project_validator.dart b/packages/flutter_tools/lib/src/project_validator.dart index 2c65fb6c8d..3bb7961f85 100644 --- a/packages/flutter_tools/lib/src/project_validator.dart +++ b/packages/flutter_tools/lib/src/project_validator.dart @@ -2,17 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:collection'; - -import 'package:process/process.dart'; - import 'base/file_system.dart'; -import 'base/io.dart'; import 'base/logger.dart'; import 'base/platform.dart'; import 'cache.dart'; -import 'convert.dart'; -import 'dart_pub_json_formatter.dart'; import 'flutter_manifest.dart'; import 'project.dart'; import 'project_validator_result.dart'; @@ -211,74 +204,3 @@ class GeneralInfoProjectValidator extends ProjectValidator { @override String get title => 'General Info'; } - -class PubDependenciesProjectValidator extends ProjectValidator { - const PubDependenciesProjectValidator(this._processManager); - final ProcessManager _processManager; - - @override - Future> start(FlutterProject project) async { - const String name = 'Dart dependencies'; - final ProcessResult processResult = await _processManager.run(['dart', 'pub', 'deps', '--json']); - if (processResult.stdout is! String) { - return [ - _createProjectValidatorError(name, 'Command dart pub deps --json failed') - ]; - } - - final LinkedHashMap jsonResult; - final List result = []; - try { - jsonResult = json.decode( - processResult.stdout.toString() - ) as LinkedHashMap; - } on FormatException { - result.add(_createProjectValidatorError(name, processResult.stderr.toString())); - return result; - } - - final DartPubJson dartPubJson = DartPubJson(jsonResult); - final List dependencies = []; - - // Information retrieved from the pubspec.lock file if a dependency comes from - // the hosted url https://pub.dartlang.org we ignore it or if the package - // is the current directory being analyzed (root). - final Set hostedDependencies = {'hosted', 'root'}; - - for (final DartDependencyPackage package in dartPubJson.packages) { - if (!hostedDependencies.contains(package.source)) { - dependencies.addAll(package.dependencies); - } - } - - final String value; - if (dependencies.isNotEmpty) { - final String verb = dependencies.length == 1 ? 'is' : 'are'; - value = '${dependencies.join(', ')} $verb not hosted'; - } else { - value = 'All pub dependencies are hosted on https://pub.dartlang.org'; - } - - result.add( - ProjectValidatorResult( - name: name, - value: value, - status: StatusProjectValidator.info, - ) - ); - - return result; - } - - @override - bool supportsProject(FlutterProject project) { - return true; - } - - @override - String get title => 'Pub dependencies'; - - ProjectValidatorResult _createProjectValidatorError(String name, String value) { - return ProjectValidatorResult(name: name, value: value, status: StatusProjectValidator.error); - } -} diff --git a/packages/flutter_tools/test/general.shard/pub_dependencies_project_validator_test.dart b/packages/flutter_tools/test/general.shard/pub_dependencies_project_validator_test.dart deleted file mode 100644 index 546e92d80a..0000000000 --- a/packages/flutter_tools/test/general.shard/pub_dependencies_project_validator_test.dart +++ /dev/null @@ -1,77 +0,0 @@ -// 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:file/memory.dart'; -import 'package:flutter_tools/src/base/file_system.dart'; -import 'package:flutter_tools/src/project.dart'; -import 'package:flutter_tools/src/project_validator.dart'; -import 'package:flutter_tools/src/project_validator_result.dart'; - -import '../src/common.dart'; -import '../src/context.dart'; - -void main() { - late FileSystem fileSystem; - - group('PubDependenciesProjectValidator', () { - - setUp(() { - fileSystem = MemoryFileSystem.test(); - }); - - testWithoutContext('success when all dependencies are hosted', () async { - final ProcessManager processManager = FakeProcessManager.list([ - const FakeCommand( - command: ['dart', 'pub', 'deps', '--json'], - stdout: '{"packages": [{"dependencies": ["abc"], "source": "hosted"}]}', - ), - ]); - final PubDependenciesProjectValidator validator = PubDependenciesProjectValidator(processManager); - - final List result = await validator.start( - FlutterProject.fromDirectoryTest(fileSystem.currentDirectory) - ); - const String expected = 'All pub dependencies are hosted on https://pub.dartlang.org'; - expect(result.length, 1); - expect(result[0].value, expected); - expect(result[0].status, StatusProjectValidator.info); - }); - - testWithoutContext('error when command dart pub deps fails', () async { - final ProcessManager processManager = FakeProcessManager.list([ - const FakeCommand( - command: ['dart', 'pub', 'deps', '--json'], - stderr: 'command fail', - ), - ]); - final PubDependenciesProjectValidator validator = PubDependenciesProjectValidator(processManager); - - final List result = await validator.start( - FlutterProject.fromDirectoryTest(fileSystem.currentDirectory) - ); - const String expected = 'command fail'; - expect(result.length, 1); - expect(result[0].value, expected); - expect(result[0].status, StatusProjectValidator.error); - }); - - testWithoutContext('info on dependencies not hosted', () async { - final ProcessManager processManager = FakeProcessManager.list([ - const FakeCommand( - command: ['dart', 'pub', 'deps', '--json'], - stdout: '{"packages": [{"dependencies": ["dep1", "dep2"], "source": "other"}]}', - ), - ]); - final PubDependenciesProjectValidator validator = PubDependenciesProjectValidator(processManager); - - final List result = await validator.start( - FlutterProject.fromDirectoryTest(fileSystem.currentDirectory) - ); - const String expected = 'dep1, dep2 are not hosted'; - expect(result.length, 1); - expect(result[0].value, expected); - expect(result[0].status, StatusProjectValidator.info); - }); - }); -} diff --git a/packages/flutter_tools/test/integration.shard/analyze_suggestions_integration_test.dart b/packages/flutter_tools/test/integration.shard/analyze_suggestions_integration_test.dart index bac0d2f80c..800ae7e0d3 100644 --- a/packages/flutter_tools/test/integration.shard/analyze_suggestions_integration_test.dart +++ b/packages/flutter_tools/test/integration.shard/analyze_suggestions_integration_test.dart @@ -63,38 +63,6 @@ void main() { expect(loggerTest.statusText, contains(expected)); }); - - testUsingContext('PubDependenciesProjectValidator success ', () async { - final BufferLogger loggerTest = BufferLogger.test(); - final AnalyzeCommand command = AnalyzeCommand( - artifacts: globals.artifacts!, - fileSystem: fileSystem, - logger: loggerTest, - platform: globals.platform, - terminal: globals.terminal, - processManager: globals.processManager, - allProjectValidators: [ - PubDependenciesProjectValidator(globals.processManager), - ], - suppressAnalytics: true, - ); - final CommandRunner runner = createTestCommandRunner(command); - - await runner.run([ - 'analyze', - '--no-pub', - '--no-current-package', - '--suggestions', - '../../dev/integration_tests/flutter_gallery', - ]); - - const String expected = '\n' - '┌────────────────────────────────────────────────────────────────────────────────────┐\n' - '│ Pub dependencies │\n' - '│ [✓] Dart dependencies: All pub dependencies are hosted on https://pub.dartlang.org │\n' - '└────────────────────────────────────────────────────────────────────────────────────┘\n'; - expect(loggerTest.statusText, contains(expected)); - }); }); group('analyze --suggestions --machine command integration', () {