From 35c8f19f1e40fa8fcfd39d9115847b23cb677687 Mon Sep 17 00:00:00 2001 From: godofredoc <54371434+godofredoc@users.noreply.github.com> Date: Tue, 22 Sep 2020 12:07:05 -0700 Subject: [PATCH] Fix windows hostonly_devicelab tests. (#66195) --- .cirrus.yml | 58 ------------------- .../bin/tasks/build_aar_module_test.dart | 15 +++-- .../bin/tasks/gradle_jetifier_test.dart | 5 +- .../module_custom_host_app_name_test.dart | 9 +-- dev/devicelab/bin/tasks/module_test.dart | 9 +-- .../bin/tasks/plugin_dependencies_test.dart | 18 +++--- dev/prod_builders.json | 42 ++++++++++++-- dev/try_builders.json | 35 +++++++++++ 8 files changed, 103 insertions(+), 88 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 9c99a9c0ca..3e52091067 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -4,11 +4,6 @@ # YAML anchors used to share fields between tasks. # See https://confluence.atlassian.com/bitbucket/yaml-anchors-960154027.html -windows_shard_template: &WINDOWS_SHARD_TEMPLATE - only_if: "changesInclude('.cirrus.yml', 'dev/**', 'bin/**') || $CIRRUS_PR == ''" # https://github.com/flutter/flutter/issues/41941 - script: - - dart --enable-asserts ./dev/bots/test.dart - firebase_shard_template: &FIREBASE_SHARD_TEMPLATE environment: # Empirically, this shard runs in 20-25 minutes with just one CPU and 4G of RAM, as of @@ -270,59 +265,6 @@ task: script: - ./dev/bots/deploy_gallery.sh -# WINDOWS SHARDS -task: - windows_container: - image: cirrusci/android-sdk:30-windowsservercore-2019 - os_version: 2019 - cpu: $CPU - memory: $MEMORY - environment: - CPU: 1 # 1-8 without compute credits, 1-30 with - MEMORY: 2G # 256M-24G without compute credits, 256M-90G with - CIRRUS_WORKING_DIR: "C:\\Windows\\Temp\\$FLUTTER_SDK_PATH_WITH_SPACE" - PATH: "$CIRRUS_WORKING_DIR/bin;$CIRRUS_WORKING_DIR/bin/cache/dart-sdk/bin;$PATH" - SHOULD_UPDATE_PACKAGES: "TRUE" - pub_cache: - folder: $APPDATA\Pub\Cache - fingerprint_script: - - ps: $Environment:OS; Get-ChildItem -Path "$Environment:CIRRUS_WORKING_DIR" pubspec.yaml -Recurse | Select-String -Pattern "PUBSPEC CHECKSUM" -SimpleMatch - reupload_on_changes: false - flutter_pkg_cache: - folder: bin\cache\pkg - fingerprint_script: echo %OS% & type bin\internal\*.version - reupload_on_changes: false - artifacts_cache: - folder: bin\cache\artifacts - fingerprint_script: echo %OS% & type bin\internal\*.version - reupload_on_changes: false - setup_script: - - git clean -xffd --exclude=bin/cache/ # git wants forward slash path separators, even on Windows. - - git fetch origin - - git fetch origin master # To set FETCH_HEAD, so that "git merge-base" works. - - flutter config --no-analytics - - flutter doctor -v - - CMD /C IF "%SHOULD_UPDATE_PACKAGES%" EQU "TRUE" flutter update-packages - - git fetch origin master - matrix: - - name: hostonly_devicelab_tests-0-windows - << : *WINDOWS_SHARD_TEMPLATE - environment: - # As of December 2019, the hostonly_devicelab_tests-0-windows shard needs at least 6G RAM to - # succeed. The shard got faster with more CPUs up to 6 CPUs and more RAM up to 8 GB - # (running in about 30 minutes). - CPU: 6 - MEMORY: 8G - - - name: hostonly_devicelab_tests-1_last-windows - << : *WINDOWS_SHARD_TEMPLATE - environment: - # As of December 2019, the hostonly_devicelab_tests-1-windows shard requires 4 GB RAM to - # succeed. The optimal configuration was 4 CPUs and 6 GB RAM, running in ~26 minutes. - # Less CPU or RAM ran slower, and more CPU or RAM yielded no extra gain. - CPU: 4 - MEMORY: 6G - # MACOS SHARDS # Mac doesn't use caches because they apparently take longer to populate and save # than just fetching the data in the first place. diff --git a/dev/devicelab/bin/tasks/build_aar_module_test.dart b/dev/devicelab/bin/tasks/build_aar_module_test.dart index 4fca9da911..8b4ff78330 100644 --- a/dev/devicelab/bin/tasks/build_aar_module_test.dart +++ b/dev/devicelab/bin/tasks/build_aar_module_test.dart @@ -9,6 +9,9 @@ import 'package:flutter_devicelab/framework/framework.dart'; import 'package:flutter_devicelab/framework/utils.dart'; import 'package:path/path.dart' as path; +final String platformLineSep = Platform.isWindows ? '\r\n': '\n'; + + final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew'; final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew'; @@ -58,12 +61,12 @@ Future main() async { final File modulePubspec = File(path.join(projectDir.path, 'pubspec.yaml')); String content = modulePubspec.readAsStringSync(); content = content.replaceFirst( - '\ndependencies:\n', - '\ndependencies:\n' - ' plugin_with_android:\n' - ' path: ../plugin_with_android\n' - ' plugin_without_android:\n' - ' path: ../plugin_without_android\n', + '${platformLineSep}dependencies:$platformLineSep', + '${platformLineSep}dependencies:$platformLineSep' + ' plugin_with_android:$platformLineSep' + ' path: ../plugin_with_android$platformLineSep' + ' plugin_without_android:$platformLineSep' + ' path: ../plugin_without_android$platformLineSep', ); modulePubspec.writeAsStringSync(content, flush: true); diff --git a/dev/devicelab/bin/tasks/gradle_jetifier_test.dart b/dev/devicelab/bin/tasks/gradle_jetifier_test.dart index 0222285a0d..323e439f9e 100644 --- a/dev/devicelab/bin/tasks/gradle_jetifier_test.dart +++ b/dev/devicelab/bin/tasks/gradle_jetifier_test.dart @@ -11,6 +11,7 @@ import 'package:path/path.dart' as path; final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew'; final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew'; +final String platformLineSep = Platform.isWindows ? '\r\n': '\n'; /// Tests that Jetifier can translate plugins that use support libraries. Future main() async { @@ -43,8 +44,8 @@ Future main() async { final File pubspec = File(path.join(projectDir.path, 'pubspec.yaml')); String content = pubspec.readAsStringSync(); content = content.replaceFirst( - '\ndependencies:\n', - '\ndependencies:\n firebase_auth: 0.7.0\n', + '${platformLineSep}dependencies:$platformLineSep', + '${platformLineSep}dependencies:$platformLineSep firebase_auth: 0.7.0$platformLineSep', ); pubspec.writeAsStringSync(content, flush: true); await inDirectory(projectDir, () async { diff --git a/dev/devicelab/bin/tasks/module_custom_host_app_name_test.dart b/dev/devicelab/bin/tasks/module_custom_host_app_name_test.dart index 1c9b3d2864..522832b004 100644 --- a/dev/devicelab/bin/tasks/module_custom_host_app_name_test.dart +++ b/dev/devicelab/bin/tasks/module_custom_host_app_name_test.dart @@ -12,6 +12,7 @@ import 'package:path/path.dart' as path; final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew'; final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew'; final String fileReadWriteMode = Platform.isWindows ? 'rw-rw-rw-' : 'rw-r--r--'; +final String platformLineSep = Platform.isWindows ? '\r\n': '\n'; /// Tests that the Flutter module project template works and supports /// adding Flutter to an existing Android app. @@ -60,8 +61,8 @@ Future main() async { final File pubspec = File(path.join(projectDir.path, 'pubspec.yaml')); String content = await pubspec.readAsString(); content = content.replaceFirst( - '\n # assets:\n', - '\n assets:\n - assets/read-only.txt\n', + '$platformLineSep # assets:$platformLineSep', + '$platformLineSep assets:$platformLineSep - assets/read-only.txt$platformLineSep', ); await pubspec.writeAsString(content, flush: true); @@ -69,8 +70,8 @@ Future main() async { content = await pubspec.readAsString(); content = content.replaceFirst( - '\ndependencies:\n', - '\ndependencies:\n device_info: 0.4.1\n package_info: 0.4.0+9\n', + '${platformLineSep}dependencies:$platformLineSep', + '${platformLineSep}dependencies:$platformLineSep device_info: 0.4.1$platformLineSep package_info: 0.4.0+9$platformLineSep', ); await pubspec.writeAsString(content, flush: true); await inDirectory(projectDir, () async { diff --git a/dev/devicelab/bin/tasks/module_test.dart b/dev/devicelab/bin/tasks/module_test.dart index 8dc9c83c3b..05d53b9f1b 100644 --- a/dev/devicelab/bin/tasks/module_test.dart +++ b/dev/devicelab/bin/tasks/module_test.dart @@ -12,6 +12,7 @@ import 'package:path/path.dart' as path; final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew'; final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew'; final String fileReadWriteMode = Platform.isWindows ? 'rw-rw-rw-' : 'rw-r--r--'; +final String platformLineSep = Platform.isWindows ? '\r\n': '\n'; /// Tests that the Flutter module project template works and supports /// adding Flutter to an existing Android app. @@ -60,8 +61,8 @@ Future main() async { final File pubspec = File(path.join(projectDir.path, 'pubspec.yaml')); String content = await pubspec.readAsString(); content = content.replaceFirst( - '\n # assets:\n', - '\n assets:\n - assets/read-only.txt\n', + '$platformLineSep # assets:$platformLineSep', + '$platformLineSep assets:$platformLineSep - assets/read-only.txt$platformLineSep', ); await pubspec.writeAsString(content, flush: true); @@ -69,8 +70,8 @@ Future main() async { content = await pubspec.readAsString(); content = content.replaceFirst( - '\ndependencies:\n', - '\ndependencies:\n device_info: 0.4.1\n package_info: 0.4.0+9\n', + '${platformLineSep}dependencies:$platformLineSep', + '${platformLineSep}dependencies:$platformLineSep device_info: 0.4.1$platformLineSep package_info: 0.4.0+9$platformLineSep', ); await pubspec.writeAsString(content, flush: true); await inDirectory(projectDir, () async { diff --git a/dev/devicelab/bin/tasks/plugin_dependencies_test.dart b/dev/devicelab/bin/tasks/plugin_dependencies_test.dart index 8b8e66b9b7..57ad193e98 100644 --- a/dev/devicelab/bin/tasks/plugin_dependencies_test.dart +++ b/dev/devicelab/bin/tasks/plugin_dependencies_test.dart @@ -9,6 +9,8 @@ import 'package:flutter_devicelab/framework/framework.dart'; import 'package:flutter_devicelab/framework/utils.dart'; import 'package:path/path.dart' as path; +final String platformLineSep = Platform.isWindows ? '\r\n': '\n'; + /// Tests that a plugin A can depend on platform code from a plugin B /// as long as plugin B is defined as a pub dependency of plugin A. /// @@ -150,14 +152,14 @@ public class DummyPluginBClass { final File pluginApubspec = File(path.join(pluginADirectory.path, 'pubspec.yaml')); String pluginApubspecContent = await pluginApubspec.readAsString(); pluginApubspecContent = pluginApubspecContent.replaceFirst( - '\ndependencies:\n', - '\ndependencies:\n' - ' plugin_b:\n' - ' path: ${pluginBDirectory.path}\n' - ' plugin_c:\n' - ' path: ${pluginCDirectory.path}\n' - ' plugin_d:\n' - ' path: ${pluginDDirectory.path}\n', + '${platformLineSep}dependencies:$platformLineSep', + '${platformLineSep}dependencies:$platformLineSep' + ' plugin_b:$platformLineSep' + ' path: ${pluginBDirectory.path}$platformLineSep' + ' plugin_c:$platformLineSep' + ' path: ${pluginCDirectory.path}$platformLineSep' + ' plugin_d:$platformLineSep' + ' path: ${pluginDDirectory.path}$platformLineSep', ); await pluginApubspec.writeAsString(pluginApubspecContent, flush: true); diff --git a/dev/prod_builders.json b/dev/prod_builders.json index d8085cdfa1..a500146b71 100644 --- a/dev/prod_builders.json +++ b/dev/prod_builders.json @@ -72,12 +72,6 @@ "task_name": "linux_gradle_plugin_fat_apk_test", "flaky": false }, - { - "name": "Linux gradle_plugin_light_apk_test", - "repo": "flutter", - "task_name": "linux_gradle_plugin_light_apk_test", - "flaky": false - }, { "name": "Linux gradle_r8_test", "repo": "flutter", @@ -264,6 +258,12 @@ "task_name": "mac_tool_tests", "flaky": false }, + { + "name": "Windows build_aar_module_test", + "repo": "flutter", + "task_name": "win_build_aar_module_test", + "flaky": false + }, { "name": "Windows build_tests", "repo": "flutter", @@ -288,6 +288,18 @@ "task_name": "win_gradle_fast_start_test", "flaky": false }, + { + "name": "Windows gradle_jetifier_test", + "repo": "flutter", + "task_name": "win_gradle_jetifier_test", + "flaky": false + }, + { + "name": "Windows gradle_plugin_light_apk_test", + "repo": "flutter", + "task_name": "win_gradle_plugin_light_apk_test", + "flaky": false + }, { "name": "Windows gradle_non_android_plugin_test", "repo": "flutter", @@ -312,12 +324,30 @@ "task_name": "win_gradle_r8_test", "flaky": false }, + { + "name": "Windows module_custom_host_app_name_test", + "repo": "flutter", + "task_name": "win_module_custom_host_app_name_test", + "flaky": false + }, { "name": "Windows module_host_with_custom_build_test", "repo": "flutter", "task_name": "win_module_host_with_custom_build_test", "flaky": false }, + { + "name": "Windows module_test", + "repo": "flutter", + "task_name": "win_module_test", + "flaky": false + }, + { + "name": "Windows plugin_dependencies_test", + "repo": "flutter", + "task_name": "win_plugin_dependencies_test", + "flaky": false + }, { "name": "Windows plugin_test", "repo": "flutter", diff --git a/dev/try_builders.json b/dev/try_builders.json index 13b28429a3..f5218d94d5 100644 --- a/dev/try_builders.json +++ b/dev/try_builders.json @@ -302,6 +302,13 @@ "enabled":true, "run_if":["dev/**", "packages/flutter_tools/**", "bin/**"] }, + { + "name": "Windows build_aar_module_test", + "repo": "flutter", + "task_name": "win_build_aar_module_test", + "enabled":true, + "run_if":["dev/**", "bin/**"] + }, { "name": "Windows build_tests", "repo": "flutter", @@ -329,6 +336,13 @@ "enabled":true, "run_if":["dev/**", "bin/**"] }, + { + "name": "Windows gradle_jetifier_test", + "repo": "flutter", + "task_name": "win_gradle_jetifier_test", + "enabled":true, + "run_if":["dev/**", "bin/**"] + }, { "name": "Windows gradle_non_android_plugin_test", "repo": "flutter", @@ -350,6 +364,20 @@ "enabled":true, "run_if":["dev/**", "bin/**"] }, + { + "name": "Windows module_custom_host_app_name_test", + "repo": "flutter", + "task_name": "win_module_custom_host_app_name_test", + "enabled":true, + "run_if":["dev/**", "bin/**"] + }, + { + "name": "Windows module_test", + "repo": "flutter", + "task_name": "win_module_test", + "enabled":true, + "run_if":["dev/**", "bin/**"] + }, { "name": "Windows module_host_with_custom_build_test", "repo": "flutter", @@ -357,6 +385,13 @@ "enabled":true, "run_if":["dev/**", "bin/**"] }, + { + "name": "Windows plugin_dependencies_test", + "repo": "flutter", + "task_name": "win_plugin_dependencies_test", + "enabled":true, + "run_if":["dev/**", "bin/**"] + }, { "name": "Windows plugin_test", "repo": "flutter",