@@ -797,19 +797,28 @@ Future<void> _verifyVersion(String filename) async {
797
797
}
798
798
799
799
Future <void > _runIntegrationTests () async {
800
- print ('Platform env vars:' );
801
-
802
- await _runDevicelabTest ('dartdocs' );
800
+ final String subShard = Platform .environment['SUBSHARD' ];
803
801
804
- if (Platform .isLinux) {
805
- await _runDevicelabTest ('flutter_create_offline_test_linux' );
806
- } else if (Platform .isWindows) {
807
- await _runDevicelabTest ('flutter_create_offline_test_windows' );
808
- } else if (Platform .isMacOS) {
809
- await _runDevicelabTest ('flutter_create_offline_test_mac' );
810
- await _runDevicelabTest ('module_test_ios' );
802
+ switch (subShard) {
803
+ case 'gradle1' :
804
+ case 'gradle2' :
805
+ // This runs some gradle integration tests if the subshard is Android.
806
+ await _androidGradleTests (subShard);
807
+ break ;
808
+ default :
809
+ await _runDevicelabTest ('dartdocs' );
810
+
811
+ if (Platform .isLinux) {
812
+ await _runDevicelabTest ('flutter_create_offline_test_linux' );
813
+ } else if (Platform .isWindows) {
814
+ await _runDevicelabTest ('flutter_create_offline_test_windows' );
815
+ } else if (Platform .isMacOS) {
816
+ await _runDevicelabTest ('flutter_create_offline_test_mac' );
817
+ await _runDevicelabTest ('module_test_ios' );
818
+ }
819
+ // This does less work if the subshard isn't Android.
820
+ await _androidPluginTest ();
811
821
}
812
- await _integrationTestsAndroidSdk ();
813
822
}
814
823
815
824
Future <void > _runDevicelabTest (String testName, {Map <String , String > env}) async {
@@ -821,12 +830,19 @@ Future<void> _runDevicelabTest(String testName, {Map<String, String> env}) async
821
830
);
822
831
}
823
832
824
- Future < void > _integrationTestsAndroidSdk () async {
833
+ String get androidSdkRoot {
825
834
final String androidSdkRoot = (Platform .environment['ANDROID_HOME' ]? .isEmpty ?? true )
826
835
? Platform .environment['ANDROID_SDK_ROOT' ]
827
836
: Platform .environment['ANDROID_HOME' ];
828
837
if (androidSdkRoot == null || androidSdkRoot.isEmpty) {
829
- print ('No Android SDK detected, skipping Android Integration Tests' );
838
+ return null ;
839
+ }
840
+ return androidSdkRoot;
841
+ }
842
+
843
+ Future <void > _androidPluginTest () async {
844
+ if (androidSdkRoot == null ) {
845
+ print ('No Android SDK detected, skipping Android Plugin test.' );
830
846
return ;
831
847
}
832
848
@@ -835,13 +851,27 @@ Future<void> _integrationTestsAndroidSdk() async {
835
851
'ANDROID_SDK_ROOT' : androidSdkRoot,
836
852
};
837
853
854
+ await _runDevicelabTest ('plugin_test' , env: env);
855
+ }
856
+
857
+ Future <void > _androidGradleTests (String subShard) async {
838
858
// TODO(dnfield): gradlew is crashing on the cirrus image and it's not clear why.
839
- if (! Platform .isWindows) {
859
+ if (androidSdkRoot == null || Platform .isWindows) {
860
+ print ('No Android SDK detected or on Windows, skipping Android gradle test.' );
861
+ return ;
862
+ }
863
+
864
+ final Map <String , String > env = < String , String > {
865
+ 'ANDROID_HOME' : androidSdkRoot,
866
+ 'ANDROID_SDK_ROOT' : androidSdkRoot,
867
+ };
868
+
869
+ if (subShard == 'gradle1' ) {
840
870
await _runDevicelabTest ('gradle_plugin_light_apk_test' , env: env);
841
871
await _runDevicelabTest ('gradle_plugin_fat_apk_test' , env: env);
872
+ }
873
+ if (subShard == 'gradle2' ) {
842
874
await _runDevicelabTest ('gradle_plugin_bundle_test' , env: env);
843
875
await _runDevicelabTest ('module_test' , env: env);
844
876
}
845
- // note: this also covers plugin_test_win as long as Windows has an Android SDK available.
846
- await _runDevicelabTest ('plugin_test' , env: env);
847
877
}
0 commit comments