Fix windows hostonly_devicelab tests. (#66195)
This commit is contained in:
parent
76698a5026
commit
35c8f19f1e
58
.cirrus.yml
58
.cirrus.yml
@ -4,11 +4,6 @@
|
|||||||
# YAML anchors used to share fields between tasks.
|
# YAML anchors used to share fields between tasks.
|
||||||
# See https://confluence.atlassian.com/bitbucket/yaml-anchors-960154027.html
|
# 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
|
firebase_shard_template: &FIREBASE_SHARD_TEMPLATE
|
||||||
environment:
|
environment:
|
||||||
# Empirically, this shard runs in 20-25 minutes with just one CPU and 4G of RAM, as of
|
# Empirically, this shard runs in 20-25 minutes with just one CPU and 4G of RAM, as of
|
||||||
@ -270,59 +265,6 @@ task:
|
|||||||
script:
|
script:
|
||||||
- ./dev/bots/deploy_gallery.sh
|
- ./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
|
# MACOS SHARDS
|
||||||
# Mac doesn't use caches because they apparently take longer to populate and save
|
# Mac doesn't use caches because they apparently take longer to populate and save
|
||||||
# than just fetching the data in the first place.
|
# than just fetching the data in the first place.
|
||||||
|
@ -9,6 +9,9 @@ import 'package:flutter_devicelab/framework/framework.dart';
|
|||||||
import 'package:flutter_devicelab/framework/utils.dart';
|
import 'package:flutter_devicelab/framework/utils.dart';
|
||||||
import 'package:path/path.dart' as path;
|
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 gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew';
|
||||||
final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew';
|
final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew';
|
||||||
|
|
||||||
@ -58,12 +61,12 @@ Future<void> main() async {
|
|||||||
final File modulePubspec = File(path.join(projectDir.path, 'pubspec.yaml'));
|
final File modulePubspec = File(path.join(projectDir.path, 'pubspec.yaml'));
|
||||||
String content = modulePubspec.readAsStringSync();
|
String content = modulePubspec.readAsStringSync();
|
||||||
content = content.replaceFirst(
|
content = content.replaceFirst(
|
||||||
'\ndependencies:\n',
|
'${platformLineSep}dependencies:$platformLineSep',
|
||||||
'\ndependencies:\n'
|
'${platformLineSep}dependencies:$platformLineSep'
|
||||||
' plugin_with_android:\n'
|
' plugin_with_android:$platformLineSep'
|
||||||
' path: ../plugin_with_android\n'
|
' path: ../plugin_with_android$platformLineSep'
|
||||||
' plugin_without_android:\n'
|
' plugin_without_android:$platformLineSep'
|
||||||
' path: ../plugin_without_android\n',
|
' path: ../plugin_without_android$platformLineSep',
|
||||||
);
|
);
|
||||||
modulePubspec.writeAsStringSync(content, flush: true);
|
modulePubspec.writeAsStringSync(content, flush: true);
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ import 'package:path/path.dart' as path;
|
|||||||
|
|
||||||
final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew';
|
final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew';
|
||||||
final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$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.
|
/// Tests that Jetifier can translate plugins that use support libraries.
|
||||||
Future<void> main() async {
|
Future<void> main() async {
|
||||||
@ -43,8 +44,8 @@ Future<void> main() async {
|
|||||||
final File pubspec = File(path.join(projectDir.path, 'pubspec.yaml'));
|
final File pubspec = File(path.join(projectDir.path, 'pubspec.yaml'));
|
||||||
String content = pubspec.readAsStringSync();
|
String content = pubspec.readAsStringSync();
|
||||||
content = content.replaceFirst(
|
content = content.replaceFirst(
|
||||||
'\ndependencies:\n',
|
'${platformLineSep}dependencies:$platformLineSep',
|
||||||
'\ndependencies:\n firebase_auth: 0.7.0\n',
|
'${platformLineSep}dependencies:$platformLineSep firebase_auth: 0.7.0$platformLineSep',
|
||||||
);
|
);
|
||||||
pubspec.writeAsStringSync(content, flush: true);
|
pubspec.writeAsStringSync(content, flush: true);
|
||||||
await inDirectory(projectDir, () async {
|
await inDirectory(projectDir, () async {
|
||||||
|
@ -12,6 +12,7 @@ import 'package:path/path.dart' as path;
|
|||||||
final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew';
|
final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew';
|
||||||
final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew';
|
final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew';
|
||||||
final String fileReadWriteMode = Platform.isWindows ? 'rw-rw-rw-' : 'rw-r--r--';
|
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
|
/// Tests that the Flutter module project template works and supports
|
||||||
/// adding Flutter to an existing Android app.
|
/// adding Flutter to an existing Android app.
|
||||||
@ -60,8 +61,8 @@ Future<void> main() async {
|
|||||||
final File pubspec = File(path.join(projectDir.path, 'pubspec.yaml'));
|
final File pubspec = File(path.join(projectDir.path, 'pubspec.yaml'));
|
||||||
String content = await pubspec.readAsString();
|
String content = await pubspec.readAsString();
|
||||||
content = content.replaceFirst(
|
content = content.replaceFirst(
|
||||||
'\n # assets:\n',
|
'$platformLineSep # assets:$platformLineSep',
|
||||||
'\n assets:\n - assets/read-only.txt\n',
|
'$platformLineSep assets:$platformLineSep - assets/read-only.txt$platformLineSep',
|
||||||
);
|
);
|
||||||
await pubspec.writeAsString(content, flush: true);
|
await pubspec.writeAsString(content, flush: true);
|
||||||
|
|
||||||
@ -69,8 +70,8 @@ Future<void> main() async {
|
|||||||
|
|
||||||
content = await pubspec.readAsString();
|
content = await pubspec.readAsString();
|
||||||
content = content.replaceFirst(
|
content = content.replaceFirst(
|
||||||
'\ndependencies:\n',
|
'${platformLineSep}dependencies:$platformLineSep',
|
||||||
'\ndependencies:\n device_info: 0.4.1\n package_info: 0.4.0+9\n',
|
'${platformLineSep}dependencies:$platformLineSep device_info: 0.4.1$platformLineSep package_info: 0.4.0+9$platformLineSep',
|
||||||
);
|
);
|
||||||
await pubspec.writeAsString(content, flush: true);
|
await pubspec.writeAsString(content, flush: true);
|
||||||
await inDirectory(projectDir, () async {
|
await inDirectory(projectDir, () async {
|
||||||
|
@ -12,6 +12,7 @@ import 'package:path/path.dart' as path;
|
|||||||
final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew';
|
final String gradlew = Platform.isWindows ? 'gradlew.bat' : 'gradlew';
|
||||||
final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew';
|
final String gradlewExecutable = Platform.isWindows ? '.\\$gradlew' : './$gradlew';
|
||||||
final String fileReadWriteMode = Platform.isWindows ? 'rw-rw-rw-' : 'rw-r--r--';
|
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
|
/// Tests that the Flutter module project template works and supports
|
||||||
/// adding Flutter to an existing Android app.
|
/// adding Flutter to an existing Android app.
|
||||||
@ -60,8 +61,8 @@ Future<void> main() async {
|
|||||||
final File pubspec = File(path.join(projectDir.path, 'pubspec.yaml'));
|
final File pubspec = File(path.join(projectDir.path, 'pubspec.yaml'));
|
||||||
String content = await pubspec.readAsString();
|
String content = await pubspec.readAsString();
|
||||||
content = content.replaceFirst(
|
content = content.replaceFirst(
|
||||||
'\n # assets:\n',
|
'$platformLineSep # assets:$platformLineSep',
|
||||||
'\n assets:\n - assets/read-only.txt\n',
|
'$platformLineSep assets:$platformLineSep - assets/read-only.txt$platformLineSep',
|
||||||
);
|
);
|
||||||
await pubspec.writeAsString(content, flush: true);
|
await pubspec.writeAsString(content, flush: true);
|
||||||
|
|
||||||
@ -69,8 +70,8 @@ Future<void> main() async {
|
|||||||
|
|
||||||
content = await pubspec.readAsString();
|
content = await pubspec.readAsString();
|
||||||
content = content.replaceFirst(
|
content = content.replaceFirst(
|
||||||
'\ndependencies:\n',
|
'${platformLineSep}dependencies:$platformLineSep',
|
||||||
'\ndependencies:\n device_info: 0.4.1\n package_info: 0.4.0+9\n',
|
'${platformLineSep}dependencies:$platformLineSep device_info: 0.4.1$platformLineSep package_info: 0.4.0+9$platformLineSep',
|
||||||
);
|
);
|
||||||
await pubspec.writeAsString(content, flush: true);
|
await pubspec.writeAsString(content, flush: true);
|
||||||
await inDirectory(projectDir, () async {
|
await inDirectory(projectDir, () async {
|
||||||
|
@ -9,6 +9,8 @@ import 'package:flutter_devicelab/framework/framework.dart';
|
|||||||
import 'package:flutter_devicelab/framework/utils.dart';
|
import 'package:flutter_devicelab/framework/utils.dart';
|
||||||
import 'package:path/path.dart' as path;
|
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
|
/// 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.
|
/// 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'));
|
final File pluginApubspec = File(path.join(pluginADirectory.path, 'pubspec.yaml'));
|
||||||
String pluginApubspecContent = await pluginApubspec.readAsString();
|
String pluginApubspecContent = await pluginApubspec.readAsString();
|
||||||
pluginApubspecContent = pluginApubspecContent.replaceFirst(
|
pluginApubspecContent = pluginApubspecContent.replaceFirst(
|
||||||
'\ndependencies:\n',
|
'${platformLineSep}dependencies:$platformLineSep',
|
||||||
'\ndependencies:\n'
|
'${platformLineSep}dependencies:$platformLineSep'
|
||||||
' plugin_b:\n'
|
' plugin_b:$platformLineSep'
|
||||||
' path: ${pluginBDirectory.path}\n'
|
' path: ${pluginBDirectory.path}$platformLineSep'
|
||||||
' plugin_c:\n'
|
' plugin_c:$platformLineSep'
|
||||||
' path: ${pluginCDirectory.path}\n'
|
' path: ${pluginCDirectory.path}$platformLineSep'
|
||||||
' plugin_d:\n'
|
' plugin_d:$platformLineSep'
|
||||||
' path: ${pluginDDirectory.path}\n',
|
' path: ${pluginDDirectory.path}$platformLineSep',
|
||||||
);
|
);
|
||||||
await pluginApubspec.writeAsString(pluginApubspecContent, flush: true);
|
await pluginApubspec.writeAsString(pluginApubspecContent, flush: true);
|
||||||
|
|
||||||
|
@ -72,12 +72,6 @@
|
|||||||
"task_name": "linux_gradle_plugin_fat_apk_test",
|
"task_name": "linux_gradle_plugin_fat_apk_test",
|
||||||
"flaky": false
|
"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",
|
"name": "Linux gradle_r8_test",
|
||||||
"repo": "flutter",
|
"repo": "flutter",
|
||||||
@ -264,6 +258,12 @@
|
|||||||
"task_name": "mac_tool_tests",
|
"task_name": "mac_tool_tests",
|
||||||
"flaky": false
|
"flaky": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Windows build_aar_module_test",
|
||||||
|
"repo": "flutter",
|
||||||
|
"task_name": "win_build_aar_module_test",
|
||||||
|
"flaky": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Windows build_tests",
|
"name": "Windows build_tests",
|
||||||
"repo": "flutter",
|
"repo": "flutter",
|
||||||
@ -288,6 +288,18 @@
|
|||||||
"task_name": "win_gradle_fast_start_test",
|
"task_name": "win_gradle_fast_start_test",
|
||||||
"flaky": false
|
"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",
|
"name": "Windows gradle_non_android_plugin_test",
|
||||||
"repo": "flutter",
|
"repo": "flutter",
|
||||||
@ -312,12 +324,30 @@
|
|||||||
"task_name": "win_gradle_r8_test",
|
"task_name": "win_gradle_r8_test",
|
||||||
"flaky": false
|
"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",
|
"name": "Windows module_host_with_custom_build_test",
|
||||||
"repo": "flutter",
|
"repo": "flutter",
|
||||||
"task_name": "win_module_host_with_custom_build_test",
|
"task_name": "win_module_host_with_custom_build_test",
|
||||||
"flaky": false
|
"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",
|
"name": "Windows plugin_test",
|
||||||
"repo": "flutter",
|
"repo": "flutter",
|
||||||
|
@ -302,6 +302,13 @@
|
|||||||
"enabled":true,
|
"enabled":true,
|
||||||
"run_if":["dev/**", "packages/flutter_tools/**", "bin/**"]
|
"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",
|
"name": "Windows build_tests",
|
||||||
"repo": "flutter",
|
"repo": "flutter",
|
||||||
@ -329,6 +336,13 @@
|
|||||||
"enabled":true,
|
"enabled":true,
|
||||||
"run_if":["dev/**", "bin/**"]
|
"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",
|
"name": "Windows gradle_non_android_plugin_test",
|
||||||
"repo": "flutter",
|
"repo": "flutter",
|
||||||
@ -350,6 +364,20 @@
|
|||||||
"enabled":true,
|
"enabled":true,
|
||||||
"run_if":["dev/**", "bin/**"]
|
"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",
|
"name": "Windows module_host_with_custom_build_test",
|
||||||
"repo": "flutter",
|
"repo": "flutter",
|
||||||
@ -357,6 +385,13 @@
|
|||||||
"enabled":true,
|
"enabled":true,
|
||||||
"run_if":["dev/**", "bin/**"]
|
"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",
|
"name": "Windows plugin_test",
|
||||||
"repo": "flutter",
|
"repo": "flutter",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user