Skip to content

Commit

Permalink
Fix pub get --unknown-flag (#119622)
Browse files Browse the repository at this point in the history
  • Loading branch information
sigurdm committed Feb 2, 2023
1 parent fd76ef0 commit ca0596e
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
7 changes: 6 additions & 1 deletion packages/flutter_tools/lib/src/commands/packages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ class PackagesGetCommand extends FlutterCommand {
argParser.addOption('git-ref');
argParser.addOption('git-path');
argParser.addFlag('dev');
argParser.addFlag('verbose', abbr: 'v');
return argParser;
}

Expand All @@ -238,7 +239,11 @@ class PackagesGetCommand extends FlutterCommand {
FlutterProject? rootProject;

if (!isHelp) {
if (directoryOption == null && rest.length == 1 &&
if (directoryOption == null &&
rest.length == 1 &&
// Anything that looks like an argument should not be interpreted as
// a directory.
!rest.single.startsWith('-') &&
((rest.single.contains('/') || rest.single.contains(r'\')) ||
name == 'get')) {
// For historical reasons, if there is one argument to the command and it contains
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,32 @@ void main() {
FileSystem: () => fileSystem,
});

testUsingContext("pub get doesn't treat unknown flag as directory", () async {
fileSystem.currentDirectory.childDirectory('target').createSync();
fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
final PackagesGetCommand command = PackagesGetCommand('get', '', PubContext.pubGet);
final CommandRunner<void> commandRunner = createTestCommandRunner(command);
pub.expectedArguments = <String>['get', '--unknown-flag', '--example', '--directory', '.'];
await commandRunner.run(<String>['get', '--unknown-flag']);
}, overrides: <Type, Generator>{
Pub: () => pub,
ProcessManager: () => FakeProcessManager.any(),
FileSystem: () => fileSystem,
});

testUsingContext("pub get doesn't treat -v as directory", () async {
fileSystem.currentDirectory.childDirectory('target').createSync();
fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
final PackagesGetCommand command = PackagesGetCommand('get', '', PubContext.pubGet);
final CommandRunner<void> commandRunner = createTestCommandRunner(command);
pub.expectedArguments = <String>['get', '-v', '--example', '--directory', '.'];
await commandRunner.run(<String>['get', '-v']);
}, overrides: <Type, Generator>{
Pub: () => pub,
ProcessManager: () => FakeProcessManager.any(),
FileSystem: () => fileSystem,
});

testUsingContext("pub get skips example directory if it doesn't contain a pubspec.yaml", () async {
fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
fileSystem.currentDirectory.childDirectory('example').createSync(recursive: true);
Expand Down Expand Up @@ -181,6 +207,7 @@ class FakePub extends Fake implements Pub {
FakePub(this.fileSystem);

final FileSystem fileSystem;
List<String>? expectedArguments;

@override
Future<void> interactively(
Expand All @@ -192,6 +219,9 @@ class FakePub extends Fake implements Pub {
bool generateSyntheticPackage = false,
PubOutputMode outputMode = PubOutputMode.all,
}) async {
if (expectedArguments != null) {
expect(arguments, expectedArguments);
}
if (project != null) {
fileSystem.directory(project.directory)
.childDirectory('.dart_tool')
Expand Down

0 comments on commit ca0596e

Please sign in to comment.