[flutter_tools] dont crash when looking for AS4.1 on windows with no LOCALAPPDATA (#77261)

This commit is contained in:
Jonah Williams 2021-03-04 11:29:20 -08:00 committed by GitHub
parent 5e62e6649b
commit 90f353f9b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 1 deletions

View file

@ -346,7 +346,7 @@ class AndroidStudio implements Comparable<AndroidStudio> {
} }
// 4.1 has a different location for AndroidStudio installs on Windows. // 4.1 has a different location for AndroidStudio installs on Windows.
if (globals.platform.isWindows) { if (globals.platform.isWindows && globals.platform.environment.containsKey('LOCALAPPDATA')) {
final File homeDot = globals.fs.file(globals.fs.path.join( final File homeDot = globals.fs.file(globals.fs.path.join(
globals.platform.environment['LOCALAPPDATA'], globals.platform.environment['LOCALAPPDATA'],
'Google', 'Google',

View file

@ -288,6 +288,24 @@ void main() {
ProcessManager: () => FakeProcessManager.any(), ProcessManager: () => FakeProcessManager.any(),
}); });
testUsingContext('Does not discover Android Studio 4.1 location on Windows if LOCALAPPDATA is null', () {
windowsFileSystem.file(r'C:\Users\Dash\AppData\Local\Google\AndroidStudio4.1\.home')
..createSync(recursive: true)
..writeAsStringSync(r'C:\Program Files\AndroidStudio');
windowsFileSystem
.directory(r'C:\Program Files\AndroidStudio')
.createSync(recursive: true);
expect(AndroidStudio.allInstalled(), isEmpty);
}, overrides: <Type, Generator>{
Platform: () => FakePlatform(
operatingSystem: 'windows',
environment: <String, String>{}, // Does not include LOCALAPPDATA
),
FileSystem: () => windowsFileSystem,
ProcessManager: () => FakeProcessManager.any(),
});
group('Installation detection on Linux', () { group('Installation detection on Linux', () {
FileSystemUtils fsUtils; FileSystemUtils fsUtils;