| // Copyright 2013 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:args/command_runner.dart'; | 
 | import 'package:file/file.dart'; | 
 | import 'package:flutter_plugin_tools/src/remove_dev_dependencies_command.dart'; | 
 | import 'package:git/git.dart'; | 
 | import 'package:test/test.dart'; | 
 |  | 
 | import 'util.dart'; | 
 |  | 
 | void main() { | 
 |   late Directory packagesDir; | 
 |   late CommandRunner<void> runner; | 
 |  | 
 |   setUp(() { | 
 |     final GitDir gitDir; | 
 |     (:packagesDir, processRunner: _, gitProcessRunner: _, :gitDir) = | 
 |         configureBaseCommandMocks(); | 
 |  | 
 |     final RemoveDevDependenciesCommand command = RemoveDevDependenciesCommand( | 
 |       packagesDir, | 
 |       gitDir: gitDir, | 
 |     ); | 
 |     runner = CommandRunner<void>('trim_dev_dependencies_command', | 
 |         'Test for trim_dev_dependencies_command'); | 
 |     runner.addCommand(command); | 
 |   }); | 
 |  | 
 |   void addToPubspec(RepositoryPackage package, String addition) { | 
 |     final String originalContent = package.pubspecFile.readAsStringSync(); | 
 |     package.pubspecFile.writeAsStringSync(''' | 
 | $originalContent | 
 | $addition | 
 | '''); | 
 |   } | 
 |  | 
 |   test('skips if nothing is removed', () async { | 
 |     createFakePackage('a_package', packagesDir, version: '1.0.0'); | 
 |  | 
 |     final List<String> output = | 
 |         await runCapturingPrint(runner, <String>['remove-dev-dependencies']); | 
 |  | 
 |     expect( | 
 |       output, | 
 |       containsAllInOrder(<Matcher>[ | 
 |         contains('SKIPPING: Nothing to remove.'), | 
 |       ]), | 
 |     ); | 
 |   }); | 
 |  | 
 |   test('removes dev_dependencies', () async { | 
 |     final RepositoryPackage package = | 
 |         createFakePackage('a_package', packagesDir, version: '1.0.0'); | 
 |  | 
 |     addToPubspec(package, ''' | 
 | dev_dependencies: | 
 |   some_dependency: ^2.1.8 | 
 |   another_dependency: ^1.0.0 | 
 | '''); | 
 |  | 
 |     final List<String> output = | 
 |         await runCapturingPrint(runner, <String>['remove-dev-dependencies']); | 
 |  | 
 |     expect( | 
 |       output, | 
 |       containsAllInOrder(<Matcher>[ | 
 |         contains('Removed dev_dependencies'), | 
 |       ]), | 
 |     ); | 
 |     expect(package.pubspecFile.readAsStringSync(), | 
 |         isNot(contains('some_dependency:'))); | 
 |     expect(package.pubspecFile.readAsStringSync(), | 
 |         isNot(contains('another_dependency:'))); | 
 |   }); | 
 |  | 
 |   test('removes from examples', () async { | 
 |     final RepositoryPackage package = | 
 |         createFakePackage('a_package', packagesDir, version: '1.0.0'); | 
 |  | 
 |     final RepositoryPackage example = package.getExamples().first; | 
 |     addToPubspec(example, ''' | 
 | dev_dependencies: | 
 |   some_dependency: ^2.1.8 | 
 |   another_dependency: ^1.0.0 | 
 | '''); | 
 |  | 
 |     final List<String> output = | 
 |         await runCapturingPrint(runner, <String>['remove-dev-dependencies']); | 
 |  | 
 |     expect( | 
 |       output, | 
 |       containsAllInOrder(<Matcher>[ | 
 |         contains('Removed dev_dependencies'), | 
 |       ]), | 
 |     ); | 
 |     expect(package.pubspecFile.readAsStringSync(), | 
 |         isNot(contains('some_dependency:'))); | 
 |     expect(package.pubspecFile.readAsStringSync(), | 
 |         isNot(contains('another_dependency:'))); | 
 |   }); | 
 | } |