Unverified Commit ca0596e4 authored by Sigurd Meldgaard's avatar Sigurd Meldgaard Committed by GitHub

Fix `pub get --unknown-flag` (#119622)

parent fd76ef0f
...@@ -213,6 +213,7 @@ class PackagesGetCommand extends FlutterCommand { ...@@ -213,6 +213,7 @@ class PackagesGetCommand extends FlutterCommand {
argParser.addOption('git-ref'); argParser.addOption('git-ref');
argParser.addOption('git-path'); argParser.addOption('git-path');
argParser.addFlag('dev'); argParser.addFlag('dev');
argParser.addFlag('verbose', abbr: 'v');
return argParser; return argParser;
} }
...@@ -238,7 +239,11 @@ class PackagesGetCommand extends FlutterCommand { ...@@ -238,7 +239,11 @@ class PackagesGetCommand extends FlutterCommand {
FlutterProject? rootProject; FlutterProject? rootProject;
if (!isHelp) { 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'\')) || ((rest.single.contains('/') || rest.single.contains(r'\')) ||
name == 'get')) { name == 'get')) {
// For historical reasons, if there is one argument to the command and it contains // For historical reasons, if there is one argument to the command and it contains
......
...@@ -94,6 +94,32 @@ void main() { ...@@ -94,6 +94,32 @@ void main() {
FileSystem: () => fileSystem, 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 { testUsingContext("pub get skips example directory if it doesn't contain a pubspec.yaml", () async {
fileSystem.currentDirectory.childFile('pubspec.yaml').createSync(); fileSystem.currentDirectory.childFile('pubspec.yaml').createSync();
fileSystem.currentDirectory.childDirectory('example').createSync(recursive: true); fileSystem.currentDirectory.childDirectory('example').createSync(recursive: true);
...@@ -181,6 +207,7 @@ class FakePub extends Fake implements Pub { ...@@ -181,6 +207,7 @@ class FakePub extends Fake implements Pub {
FakePub(this.fileSystem); FakePub(this.fileSystem);
final FileSystem fileSystem; final FileSystem fileSystem;
List<String>? expectedArguments;
@override @override
Future<void> interactively( Future<void> interactively(
...@@ -192,6 +219,9 @@ class FakePub extends Fake implements Pub { ...@@ -192,6 +219,9 @@ class FakePub extends Fake implements Pub {
bool generateSyntheticPackage = false, bool generateSyntheticPackage = false,
PubOutputMode outputMode = PubOutputMode.all, PubOutputMode outputMode = PubOutputMode.all,
}) async { }) async {
if (expectedArguments != null) {
expect(arguments, expectedArguments);
}
if (project != null) { if (project != null) {
fileSystem.directory(project.directory) fileSystem.directory(project.directory)
.childDirectory('.dart_tool') .childDirectory('.dart_tool')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment