Skip to content

Commit 4c35308

Browse files
authored
fix(doctor): add an alternative path for the Dart plugin (#163215)
It seems like with some recent plugin/IDE version, the path for the Dart plugin has changed from `<base path>/Dart` to `<base path>/dart`, causing `flutter doctor` to incorrectly assume that the plugin is not installed. Add `dart` as an alternative to the existing `Dart` package name. Fixes #163214. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [ ] I added new tests to check the change I am making, or this PR is [test-exempt]. - [ ] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
1 parent 92b391d commit 4c35308

File tree

3 files changed

+33
-6
lines changed

3 files changed

+33
-6
lines changed

packages/flutter_tools/lib/src/android/android_studio_validator.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class AndroidStudioValidator extends DoctorValidator {
7676
);
7777
plugins.validatePackage(
7878
messages,
79-
<String>['Dart'],
79+
<String>['Dart', 'dart'],
8080
'Dart',
8181
IntelliJPlugins.kIntellijDartPluginUrl,
8282
);

packages/flutter_tools/lib/src/intellij/intellij_validator.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ abstract class IntelliJValidator extends DoctorValidator {
109109
);
110110
plugins.validatePackage(
111111
messages,
112-
<String>['Dart'],
112+
<String>['Dart', 'dart'],
113113
'Dart',
114114
IntelliJPlugins.kIntellijDartPluginUrl,
115115
);

packages/flutter_tools/test/general.shard/intellij/intellij_test.dart

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ void main() {
5252
);
5353

5454
final List<ValidationMessage> messages = <ValidationMessage>[];
55-
plugins.validatePackage(messages, <String>['Dart'], 'Dart', 'download-Dart');
55+
plugins.validatePackage(messages, <String>['Dart', 'dart'], 'Dart', 'download-Dart');
5656
plugins.validatePackage(
5757
messages,
5858
<String>['flutter-intellij', 'flutter-intellij.jar'],
@@ -156,7 +156,7 @@ Manifest-Version: 1.0
156156
final IntelliJPlugins plugins = IntelliJPlugins(_kPluginsPath, fileSystem: fileSystem);
157157

158158
final List<ValidationMessage> messages = <ValidationMessage>[];
159-
plugins.validatePackage(messages, <String>['Dart'], 'Dart', 'download-Dart');
159+
plugins.validatePackage(messages, <String>['Dart', 'dart'], 'Dart', 'download-Dart');
160160
plugins.validatePackage(
161161
messages,
162162
<String>['flutter-intellij', 'flutter-intellij.jar'],
@@ -188,11 +188,38 @@ Manifest-Version: 1.0
188188
);
189189

190190
expect(
191-
() =>
192-
plugins.validatePackage(<ValidationMessage>[], <String>['Dart'], 'Dart', 'download-Dart'),
191+
() => plugins.validatePackage(
192+
<ValidationMessage>[],
193+
<String>['Dart', 'dart'],
194+
'Dart',
195+
'download-Dart',
196+
),
193197
returnsNormally,
194198
);
195199
});
200+
201+
// Regression test for https://github.com/flutter/flutter/issues/163214
202+
testWithoutContext(
203+
'IntelliJPlugins can find the Dart plugin with a lowercase package name',
204+
() async {
205+
final IntelliJPlugins plugins = IntelliJPlugins(_kPluginsPath, fileSystem: fileSystem);
206+
final Archive dartJarArchive = buildSingleFileArchive('META-INF/plugin.xml', r'''
207+
<idea-plugin>
208+
<name>Dart</name>
209+
<version>242.24931</version>
210+
</idea-plugin>''');
211+
writeFileCreatingDirectories(
212+
fileSystem.path.join(_kPluginsPath, 'dart', 'lib', 'dart.jar'),
213+
ZipEncoder().encode(dartJarArchive)!,
214+
);
215+
216+
final List<ValidationMessage> messages = <ValidationMessage>[];
217+
plugins.validatePackage(messages, <String>['Dart', 'dart'], 'Dart', 'download-Dart');
218+
219+
expect(messages.length, equals(1));
220+
expect(messages.single.message, equals('Dart plugin version 242.24931'));
221+
},
222+
);
196223
}
197224

198225
const String _kPluginsPath = '/data/intellij/plugins';

0 commit comments

Comments
 (0)