// 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/common/core.dart'; import 'package:flutter_plugin_tools/src/fix_command.dart'; import 'package:git/git.dart'; import 'package:test/test.dart'; import 'mocks.dart'; import 'util.dart'; void main() { late MockPlatform mockPlatform; late Directory packagesDir; late RecordingProcessRunner processRunner; late CommandRunner runner; setUp(() { mockPlatform = MockPlatform(); final GitDir gitDir; (:packagesDir, :processRunner, gitProcessRunner: _, :gitDir) = configureBaseCommandMocks(platform: mockPlatform); final FixCommand command = FixCommand( packagesDir, processRunner: processRunner, platform: mockPlatform, gitDir: gitDir, ); runner = CommandRunner('fix_command', 'Test for fix_command'); runner.addCommand(command); }); test('runs fix in top-level packages and subpackages', () async { final RepositoryPackage package = createFakePackage('a', packagesDir); final RepositoryPackage plugin = createFakePlugin('b', packagesDir); await runCapturingPrint(runner, ['fix']); expect( processRunner.recordedCalls, orderedEquals([ ProcessCall('dart', const ['fix', '--apply'], package.path), ProcessCall('dart', const ['fix', '--apply'], package.getExamples().first.path), ProcessCall('dart', const ['fix', '--apply'], plugin.path), ProcessCall('dart', const ['fix', '--apply'], plugin.getExamples().first.path), ])); }); test('fails if "dart fix" fails', () async { createFakePlugin('foo', packagesDir); processRunner.mockProcessesForExecutable['dart'] = [ FakeProcessInfo(MockProcess(exitCode: 1), ['fix']), ]; Error? commandError; final List output = await runCapturingPrint(runner, ['fix'], errorHandler: (Error e) { commandError = e; }); expect(commandError, isA()); expect( output, containsAllInOrder([ contains('Unable to automatically fix package.'), ]), ); }); }