Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
d7b0aab6
Commit
d7b0aab6
authored
Feb 26, 2019
by
KyleWong
Committed by
xster
Feb 26, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add tests for pr:27687 (#27944)
parent
6cc6e7e1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
137 additions
and
11 deletions
+137
-11
android_studio_test.dart
packages/flutter_tools/test/android/android_studio_test.dart
+137
-11
No files found.
packages/flutter_tools/test/android/android_studio_test.dart
View file @
d7b0aab6
...
...
@@ -6,36 +6,89 @@ import 'package:file/memory.dart';
import
'package:flutter_tools/src/android/android_studio.dart'
;
import
'package:flutter_tools/src/base/file_system.dart'
;
import
'package:flutter_tools/src/base/platform.dart'
;
import
'package:flutter_tools/src/ios/ios_workflow.dart'
;
import
'package:mockito/mockito.dart'
;
import
'../src/common.dart'
;
import
'../src/context.dart'
;
const
String
home
=
'/home/me'
;
const
String
homeLinux
=
'/home/me'
;
const
String
homeMac
=
'/Users/me'
;
const
String
macStudioInfoPlistValue
=
'''
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleGetInfoString</key>
<string>Android Studio 3.3, build AI-182.5107.16.33.5199772. Copyright JetBrains s.r.o., (c) 2000-2018</string>
<key>CFBundleShortVersionString</key>
<string>3.3</string>
<key>CFBundleVersion</key>
<string>AI-182.5107.16.33.5199772</string>
<key>JVMOptions</key>
<dict>
<key>Properties</key>
<dict>
<key>idea.platform.prefix</key>
<string>AndroidStudio</string>
<key>idea.paths.selector</key>
<string>AndroidStudio3.3</string>
</dict>
</dict>
</dict>
</plist>
'''
;
const
String
macStudioInfoPlistDefaultsResult
=
'''
{
CFBundleGetInfoString = "Android Studio 3.3, build AI-182.5107.16.33.5199772. Copyright JetBrains s.r.o., (c) 2000-2018";
CFBundleShortVersionString = "3.3";
CFBundleVersion = "AI-182.5107.16.33.5199772";
JVMOptions = {
Properties = {
"idea.paths.selector" = "AndroidStudio3.3";
"idea.platform.prefix" = AndroidStudio;
};
};
}
'''
;
class
MockIOSWorkflow
extends
Mock
implements
IOSWorkflow
{}
Platform
linuxPlatform
(
)
{
return
FakePlatform
.
fromPlatform
(
const
LocalPlatform
())
..
operatingSystem
=
'linux'
..
environment
=
<
String
,
String
>{
'HOME'
:
home
};
..
environment
=
<
String
,
String
>{
'HOME'
:
home
Linux
};
}
void
main
(
)
{
const
String
installPath
=
'/opt/android-studio-with-cheese-5.0'
;
const
String
studioHome
=
'
$home
/.AndroidStudioWithCheese5.0'
;
const
String
homeFile
=
'
$studioHome
/system/.home'
;
Platform
macPlatform
(
)
{
return
FakePlatform
.
fromPlatform
(
const
LocalPlatform
())
..
operatingSystem
=
'macos'
..
environment
=
<
String
,
String
>{
'HOME'
:
homeMac
};
}
void
main
(
)
{
MemoryFileSystem
fs
;
MockIOSWorkflow
iosWorkflow
;
setUp
(()
{
fs
=
MemoryFileSystem
();
fs
.
directory
(
installPath
).
createSync
(
recursive:
true
);
fs
.
file
(
homeFile
).
createSync
(
recursive:
true
);
fs
.
file
(
homeFile
).
writeAsStringSync
(
installPath
);
iosWorkflow
=
MockIOSWorkflow
();
});
group
(
'pluginsPath'
,
()
{
group
(
'pluginsPath
on Linux
'
,
()
{
testUsingContext
(
'extracts custom paths from home dir'
,
()
{
const
String
installPath
=
'/opt/android-studio-with-cheese-5.0'
;
const
String
studioHome
=
'
$homeLinux
/.AndroidStudioWithCheese5.0'
;
const
String
homeFile
=
'
$studioHome
/system/.home'
;
fs
.
directory
(
installPath
).
createSync
(
recursive:
true
);
fs
.
file
(
homeFile
).
createSync
(
recursive:
true
);
fs
.
file
(
homeFile
).
writeAsStringSync
(
installPath
);
final
AndroidStudio
studio
=
AndroidStudio
.
fromHomeDot
(
fs
.
directory
(
studioHome
));
AndroidStudio
.
fromHomeDot
(
fs
.
directory
(
studioHome
));
expect
(
studio
,
isNotNull
);
expect
(
studio
.
pluginsPath
,
equals
(
'/home/me/.AndroidStudioWithCheese5.0/config/plugins'
));
...
...
@@ -46,4 +99,77 @@ void main() {
Platform:
()
=>
linuxPlatform
(),
});
});
group
(
'pluginsPath on Mac'
,
()
{
testUsingContext
(
'extracts custom paths for directly downloaded Android Studio on Mac'
,
()
{
final
String
studioInApplicationPlistFolder
=
fs
.
path
.
join
(
'/'
,
'Application'
,
'Android Studio.app'
,
'Contents'
);
fs
.
directory
(
studioInApplicationPlistFolder
).
createSync
(
recursive:
true
);
final
String
plistFilePath
=
fs
.
path
.
join
(
studioInApplicationPlistFolder
,
'Info.plist'
);
fs
.
file
(
plistFilePath
).
writeAsStringSync
(
macStudioInfoPlistValue
);
when
(
iosWorkflow
.
getPlistValueFromFile
(
plistFilePath
,
null
)).
thenReturn
(
macStudioInfoPlistDefaultsResult
);
final
AndroidStudio
studio
=
AndroidStudio
.
fromMacOSBundle
(
fs
.
directory
(
studioInApplicationPlistFolder
)?.
parent
?.
path
);
expect
(
studio
,
isNotNull
);
expect
(
studio
.
pluginsPath
,
equals
(
fs
.
path
.
join
(
homeMac
,
'Library'
,
'Application Support'
,
'AndroidStudio3.3'
)));
},
overrides:
<
Type
,
Generator
>{
FileSystem:
()
=>
fs
,
// Custom home paths are not supported on macOS nor Windows yet,
// so we force the platform to fake Linux here.
Platform:
()
=>
macPlatform
(),
IOSWorkflow:
()
=>
iosWorkflow
,
});
testUsingContext
(
'extracts custom paths for Android Studio downloaded by JetBrainsToolbox on Mac'
,
()
{
final
String
jetbrainsStudioInApplicationPlistFolder
=
fs
.
path
.
join
(
homeMac
,
'Application'
,
'JetBrains Toolbox'
,
'Android Studio.app'
,
'Contents'
);
fs
.
directory
(
jetbrainsStudioInApplicationPlistFolder
).
createSync
(
recursive:
true
);
const
String
jetbrainsInfoPlistValue
=
'''
<?xml version='
1.0
' encoding='
UTF
-
8
'?>
<!DOCTYPE plist PUBLIC '
-
//Apple Computer//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'>
<
plist
version
=
"1.0"
>
<
dict
>
<
key
>
CFBundleVersion
</
key
>
<
string
>
3.3
</
string
>
<
key
>
CFBundleLongVersionString
</
key
>
<
string
>
3.3
</
string
>
<
key
>
CFBundleShortVersionString
</
key
>
<
string
>
3.3
</
string
>
<
key
>
JetBrainsToolboxApp
</
key
>
<
string
>
$homeMac
/
Library
/
Application
Support
/
JetBrains
/
Toolbox
/
apps
/
AndroidStudio
/
ch
-
0
/
183.5256920
/
Android
Studio
3.3
</
string
>
</
dict
>
</
plist
>
''';
const String jetbrainsInfoPlistDefaultsResult =
'''
{
CFBundleLongVersionString
=
"3.3"
;
CFBundleShortVersionString
=
"3.3"
;
CFBundleVersion
=
"3.3"
;
JetBrainsToolboxApp
=
"
$homeMac
/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/183.5256920/Android Studio 3.3.app"
;
}
''';
final String jetbrainsPlistFilePath = fs.path.join(jetbrainsStudioInApplicationPlistFolder, '
Info
.
plist
');
fs.file(jetbrainsPlistFilePath).writeAsStringSync(jetbrainsInfoPlistValue);
when(iosWorkflow.getPlistValueFromFile(jetbrainsPlistFilePath, null)).thenReturn(jetbrainsInfoPlistDefaultsResult);
final String studioInApplicationPlistFolder = fs.path.join(fs.path.join(homeMac, '
Library
', '
Application
Support
'), '
JetBrains
', '
Toolbox
', '
apps
', '
AndroidStudio
', '
ch
-
0
', '
183.5256920
', fs.path.join('
Android
Studio
3.3
.
app
', '
Contents
'));
fs.directory(studioInApplicationPlistFolder).createSync(recursive: true);
final String studioPlistFilePath = fs.path.join(studioInApplicationPlistFolder, '
Info
.
plist
');
fs.file(studioPlistFilePath).writeAsStringSync(macStudioInfoPlistValue);
when(iosWorkflow.getPlistValueFromFile(studioPlistFilePath, null)).thenReturn(macStudioInfoPlistDefaultsResult);
final AndroidStudio studio = AndroidStudio.fromMacOSBundle(fs.directory(jetbrainsStudioInApplicationPlistFolder)?.parent?.path);
expect(studio, isNotNull);
expect(studio.pluginsPath,
equals(fs.path.join(homeMac, '
Library
', '
Application
Support
', '
AndroidStudio3
.
3
')));
}, overrides: <Type, Generator>{
FileSystem: () => fs,
// Custom home paths are not supported on macOS nor Windows yet,
// so we force the platform to fake Linux here.
Platform: () => macPlatform(),
IOSWorkflow: () => iosWorkflow,
});
});
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment