Files
packages/script/tool/test/fix_command_test.dart
stuartmorgan f224eea858 [tool] Add pigeon support to update-dependency (#3640)
[tool] Add pigeon support to update-dependency
2023-04-05 10:44:19 +00:00

77 lines
2.4 KiB
Dart

// 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:file/memory.dart';
import 'package:flutter_plugin_tools/src/common/core.dart';
import 'package:flutter_plugin_tools/src/fix_command.dart';
import 'package:test/test.dart';
import 'mocks.dart';
import 'util.dart';
void main() {
late FileSystem fileSystem;
late MockPlatform mockPlatform;
late Directory packagesDir;
late RecordingProcessRunner processRunner;
late CommandRunner<void> runner;
setUp(() {
fileSystem = MemoryFileSystem();
mockPlatform = MockPlatform();
packagesDir = createPackagesDirectory(fileSystem: fileSystem);
processRunner = RecordingProcessRunner();
final FixCommand command = FixCommand(
packagesDir,
processRunner: processRunner,
platform: mockPlatform,
);
runner = CommandRunner<void>('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, <String>['fix']);
expect(
processRunner.recordedCalls,
orderedEquals(<ProcessCall>[
ProcessCall('dart', const <String>['fix', '--apply'], package.path),
ProcessCall('dart', const <String>['fix', '--apply'],
package.getExamples().first.path),
ProcessCall('dart', const <String>['fix', '--apply'], plugin.path),
ProcessCall('dart', const <String>['fix', '--apply'],
plugin.getExamples().first.path),
]));
});
test('fails if "dart fix" fails', () async {
createFakePlugin('foo', packagesDir);
processRunner.mockProcessesForExecutable['dart'] = <FakeProcessInfo>[
FakeProcessInfo(MockProcess(exitCode: 1), <String>['fix']),
];
Error? commandError;
final List<String> output = await runCapturingPrint(runner, <String>['fix'],
errorHandler: (Error e) {
commandError = e;
});
expect(commandError, isA<ToolExit>());
expect(
output,
containsAllInOrder(<Matcher>[
contains('Unable to automatically fix package.'),
]),
);
});
}