// Copyright 2013 The Flutter Authors // 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 runner; setUp(() { final GitDir gitDir; (:packagesDir, processRunner: _, gitProcessRunner: _, :gitDir) = configureBaseCommandMocks(); final command = RemoveDevDependenciesCommand(packagesDir, gitDir: gitDir); runner = CommandRunner( '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 output = await runCapturingPrint(runner, [ 'remove-dev-dependencies', ]); expect( output, containsAllInOrder([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 output = await runCapturingPrint(runner, [ 'remove-dev-dependencies', ]); expect( output, containsAllInOrder([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 output = await runCapturingPrint(runner, [ 'remove-dev-dependencies', ]); expect( output, containsAllInOrder([contains('Removed dev_dependencies')]), ); expect( package.pubspecFile.readAsStringSync(), isNot(contains('some_dependency:')), ); expect( package.pubspecFile.readAsStringSync(), isNot(contains('another_dependency:')), ); }); }