From 233bda71cb9e89d435dc31d971b67434da95557d Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Wed, 5 May 2021 16:28:24 -0400 Subject: [PATCH 01/14] Standardize script step name for driver --- .cirrus.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index e9db1b7b6bf8..125e2dac4872 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -116,7 +116,7 @@ task: build_script: - flutter config --enable-linux-desktop - ./script/incremental_build.sh build-examples --linux - test_script: + drive_script: - xvfb-run ./script/incremental_build.sh drive-examples --linux # Heavy-workload Linux tasks. @@ -182,7 +182,7 @@ task: - ./chromedriver/chromedriver --port=4444 & build_script: - ./script/incremental_build.sh build-examples --web - test_script: + drive_script: # TODO(stuartmorgan): Eliminate this check once 2.1 reaches stable. - if [[ "$CHANNEL" == "master" ]]; then - ./script/incremental_build.sh drive-examples --web @@ -221,8 +221,9 @@ task: - xcrun simctl create Flutter-iPhone com.apple.CoreSimulator.SimDeviceType.iPhone-11 com.apple.CoreSimulator.SimRuntime.iOS-14-3 | xargs xcrun simctl boot build_script: - ./script/incremental_build.sh build-examples --ipa - test_script: + xctest_script: - ./script/incremental_build.sh xctest --skip $PLUGINS_TO_SKIP_XCTESTS --ios-destination "platform=iOS Simulator,name=iPhone 11,OS=latest" + drive_script: # `drive-examples` contains integration tests, which changes the UI of the application. # This UI change sometimes affects `xctest`. # So we run `drive-examples` after `xctest`, changing the order will result ci failure. @@ -245,7 +246,7 @@ task: build_script: - flutter config --enable-macos-desktop - ./script/incremental_build.sh build-examples --macos --no-ipa - test_script: + drive_script: - ./script/incremental_build.sh drive-examples --macos task: From 7b69747a0f2970a90cbc4b164d5c71b35ebd2c4b Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Wed, 5 May 2021 16:29:51 -0400 Subject: [PATCH 02/14] Add logging, and make having no integration tests run fatal --- .../tool/lib/src/drive_examples_command.dart | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/script/tool/lib/src/drive_examples_command.dart b/script/tool/lib/src/drive_examples_command.dart index e52052a49ae6..6c60a23513bb 100644 --- a/script/tool/lib/src/drive_examples_command.dart +++ b/script/tool/lib/src/drive_examples_command.dart @@ -52,23 +52,30 @@ class DriveExamplesCommand extends PluginCommand { @override Future run() async { final List failingTests = []; + final List pluginsWithoutTests = []; final bool isLinux = argResults[kLinux] == true; final bool isMacos = argResults[kMacos] == true; final bool isWeb = argResults[kWeb] == true; final bool isWindows = argResults[kWindows] == true; await for (final Directory plugin in getPlugins()) { + final String pluginName = plugin.basename; + print('\n==========\nChecking $pluginName...'); + if (!(await _pluginSupportedOnCurrentPlatform(plugin, fileSystem))) { + print('Not supported for the target platform; skipping.'); + continue; + } + int examplesFound = 0; + bool testsRan = false; final String flutterCommand = const LocalPlatform().isWindows ? 'flutter.bat' : 'flutter'; for (final Directory example in getExamplesForPlugin(plugin)) { + ++examplesFound; final String packageName = p.relative(example.path, from: packagesDir.path); - if (!(await _pluginSupportedOnCurrentPlatform(plugin, fileSystem))) { - continue; - } final Directory driverTests = fileSystem.directory(p.join(example.path, 'test_driver')); if (!driverTests.existsSync()) { - // No driver tests available for this example + print('No driver tests found for $packageName'); continue; } // Look for driver tests ending in _test.dart in test_driver/ @@ -160,6 +167,7 @@ Tried searching for the following: } for (final String targetPath in targetPaths) { + testsRan = true; final int exitCode = await processRunner.runAndStream( flutterCommand, [ @@ -177,6 +185,11 @@ Tried searching for the following: } } } + if (!testsRan) { + pluginsWithoutTests.add(pluginName); + print( + 'No driver tests run for $pluginName ($examplesFound examples found)'); + } } print('\n\n'); @@ -188,6 +201,15 @@ Tried searching for the following: throw ToolExit(1); } + if (pluginsWithoutTests.isNotEmpty) { + print('The following plugins did not run any integration tests:'); + for (final String plugin in pluginsWithoutTests) { + print(' * $plugin'); + } + print('If this is intentional, they must be explicitly excluded.'); + throw ToolExit(1); + } + print('All driver tests successful!'); } From 7e00fa858ffc0aaec2d60a5e4ba54c92e9a8810d Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 10:26:59 -0400 Subject: [PATCH 03/14] Standardize boilerplate test driver files --- .../example/test_driver/integration_test.dart | 17 ++--------------- .../example/test_driver/integration_test.dart | 19 +++---------------- .../test_driver/test/integration_test.dart | 17 +++-------------- .../example/test_driver/integration_test.dart | 2 +- .../test_driver/test/integration_test.dart | 16 ++++------------ .../example/test_driver/integration_test.dart | 17 +++-------------- .../example/test_driver/integration_test.dart | 15 +++------------ .../example/test_driver/integration_test.dart | 2 +- .../test_driver/integration_test.dart | 16 +++------------- .../example/test_driver/integration_test.dart | 2 +- .../test_driver/test/integration_test.dart | 17 ++++------------- .../test_driver/test/integration_test.dart | 17 ++++------------- .../example/test_driver/integration_test.dart | 2 ++ .../example/test_driver/integration_test.dart | 16 ++-------------- .../example/test_driver/integration_test.dart | 13 ++----------- .../example/test_driver/integration_test.dart | 13 ++----------- .../example/test_driver/integration_test.dart | 13 ++----------- .../example/test_driver/integration_test.dart | 13 ++----------- .../example/test_driver/integration_test.dart | 17 ++++------------- .../test_driver/test/integration_test.dart | 16 +++------------- .../test_driver/test/integration_test.dart | 16 +++------------- .../example/test_driver/integration_test.dart | 14 ++------------ .../example/test_driver/integration_test.dart | 14 ++------------ .../example/test_driver/integration_test.dart | 14 ++------------ .../example/test_driver/integration_test.dart | 14 ++------------ .../example/test_driver/integration_test.dart | 17 +++-------------- .../example/test_driver/integration_test.dart | 16 +++------------- .../example/test_driver/integration_test.dart | 16 +++------------- .../example/test_driver/integration_test.dart | 2 +- .../example/test_driver/integration_test.dart | 16 +++------------- .../example/test_driver/integration_test.dart | 17 +++-------------- .../example/test_driver/integration_test.dart | 16 +++------------- .../test_driver/test/integration_test.dart | 16 ++++------------ 33 files changed, 85 insertions(+), 363 deletions(-) diff --git a/packages/android_alarm_manager/example/test_driver/integration_test.dart b/packages/android_alarm_manager/example/test_driver/integration_test.dart index c08f4a817f6c..6a0e6fa82dbe 100644 --- a/packages/android_alarm_manager/example/test_driver/integration_test.dart +++ b/packages/android_alarm_manager/example/test_driver/integration_test.dart @@ -4,19 +4,6 @@ // @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; +import 'package:integration_test/integration_test_driver.dart'; -import 'package:flutter_driver/flutter_driver.dart'; - -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = await driver.requestData( - null, - timeout: const Duration(minutes: 1), - ); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/android_intent/example/test_driver/integration_test.dart b/packages/android_intent/example/test_driver/integration_test.dart index cc91e52ef2ef..6a0e6fa82dbe 100644 --- a/packages/android_intent/example/test_driver/integration_test.dart +++ b/packages/android_intent/example/test_driver/integration_test.dart @@ -2,21 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; +import 'package:integration_test/integration_test_driver.dart'; -import 'package:flutter_driver/flutter_driver.dart'; - -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = await driver.requestData( - null, - timeout: const Duration(minutes: 1), - ); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/connectivity/connectivity/example/test_driver/test/integration_test.dart b/packages/connectivity/connectivity/example/test_driver/test/integration_test.dart index 79c1875f85d2..6a0e6fa82dbe 100644 --- a/packages/connectivity/connectivity/example/test_driver/test/integration_test.dart +++ b/packages/connectivity/connectivity/example/test_driver/test/integration_test.dart @@ -2,19 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// TODO(amirh): Remove this once flutter_driver supports null safety. -// https://github.com/flutter/flutter/issues/71379 -// @dart = 2.9 +// @dart=2.9 -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/connectivity/connectivity_for_web/example/test_driver/integration_test.dart b/packages/connectivity/connectivity_for_web/example/test_driver/integration_test.dart index f26b6a310cfe..4f10f2a522f3 100644 --- a/packages/connectivity/connectivity_for_web/example/test_driver/integration_test.dart +++ b/packages/connectivity/connectivity_for_web/example/test_driver/integration_test.dart @@ -4,4 +4,4 @@ import 'package:integration_test/integration_test_driver.dart'; -Future main() async => integrationDriver(); +Future main() => integrationDriver(); diff --git a/packages/connectivity/connectivity_macos/example/test_driver/test/integration_test.dart b/packages/connectivity/connectivity_macos/example/test_driver/test/integration_test.dart index 9647a12d77ce..6a0e6fa82dbe 100644 --- a/packages/connectivity/connectivity_macos/example/test_driver/test/integration_test.dart +++ b/packages/connectivity/connectivity_macos/example/test_driver/test/integration_test.dart @@ -2,16 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +// @dart=2.9 -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); diff --git a/packages/device_info/device_info/example/test_driver/integration_test.dart b/packages/device_info/device_info/example/test_driver/integration_test.dart index 156ecae508c1..6a0e6fa82dbe 100644 --- a/packages/device_info/device_info/example/test_driver/integration_test.dart +++ b/packages/device_info/device_info/example/test_driver/integration_test.dart @@ -2,19 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// TODO(cyanglaz): Remove once https://github.com/flutter/flutter/issues/59879 is fixed. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/integration_test.dart b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/integration_test.dart index ab30698581d0..6a0e6fa82dbe 100644 --- a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/integration_test.dart +++ b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/integration_test.dart @@ -1,18 +1,9 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. + // @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/test_driver/integration_test.dart b/packages/google_maps_flutter/google_maps_flutter_web/example/test_driver/integration_test.dart index f26b6a310cfe..4f10f2a522f3 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/example/test_driver/integration_test.dart +++ b/packages/google_maps_flutter/google_maps_flutter_web/example/test_driver/integration_test.dart @@ -4,4 +4,4 @@ import 'package:integration_test/integration_test_driver.dart'; -Future main() async => integrationDriver(); +Future main() => integrationDriver(); diff --git a/packages/google_sign_in/google_sign_in/test_driver/integration_test.dart b/packages/google_sign_in/google_sign_in/test_driver/integration_test.dart index 257b0d3c0930..6a0e6fa82dbe 100644 --- a/packages/google_sign_in/google_sign_in/test_driver/integration_test.dart +++ b/packages/google_sign_in/google_sign_in/test_driver/integration_test.dart @@ -2,18 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/google_sign_in/google_sign_in_web/example/test_driver/integration_test.dart b/packages/google_sign_in/google_sign_in_web/example/test_driver/integration_test.dart index f26b6a310cfe..4f10f2a522f3 100644 --- a/packages/google_sign_in/google_sign_in_web/example/test_driver/integration_test.dart +++ b/packages/google_sign_in/google_sign_in_web/example/test_driver/integration_test.dart @@ -4,4 +4,4 @@ import 'package:integration_test/integration_test_driver.dart'; -Future main() async => integrationDriver(); +Future main() => integrationDriver(); diff --git a/packages/image_picker/image_picker/example/test_driver/test/integration_test.dart b/packages/image_picker/image_picker/example/test_driver/test/integration_test.dart index 4c4c006068b8..6a0e6fa82dbe 100644 --- a/packages/image_picker/image_picker/example/test_driver/test/integration_test.dart +++ b/packages/image_picker/image_picker/example/test_driver/test/integration_test.dart @@ -2,17 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +// @dart=2.9 -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); diff --git a/packages/in_app_purchase/in_app_purchase/example/test_driver/test/integration_test.dart b/packages/in_app_purchase/in_app_purchase/example/test_driver/test/integration_test.dart index 4c4c006068b8..6a0e6fa82dbe 100644 --- a/packages/in_app_purchase/in_app_purchase/example/test_driver/test/integration_test.dart +++ b/packages/in_app_purchase/in_app_purchase/example/test_driver/test/integration_test.dart @@ -2,17 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +// @dart=2.9 -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); diff --git a/packages/integration_test/example/test_driver/integration_test.dart b/packages/integration_test/example/test_driver/integration_test.dart index 4f10f2a522f3..6a0e6fa82dbe 100644 --- a/packages/integration_test/example/test_driver/integration_test.dart +++ b/packages/integration_test/example/test_driver/integration_test.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// @dart=2.9 + import 'package:integration_test/integration_test_driver.dart'; Future main() => integrationDriver(); diff --git a/packages/package_info/example/test_driver/integration_test.dart b/packages/package_info/example/test_driver/integration_test.dart index 1bcccae039d6..6a0e6fa82dbe 100644 --- a/packages/package_info/example/test_driver/integration_test.dart +++ b/packages/package_info/example/test_driver/integration_test.dart @@ -4,18 +4,6 @@ // @dart=2.9 -import 'dart:convert'; -import 'dart:io'; +import 'package:integration_test/integration_test_driver.dart'; -import 'package:flutter_driver/flutter_driver.dart'; - -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = await driver.requestData( - null, - timeout: const Duration(minutes: 1), - ); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/path_provider/path_provider/example/test_driver/integration_test.dart b/packages/path_provider/path_provider/example/test_driver/integration_test.dart index 24a0ee720b2a..6a0e6fa82dbe 100644 --- a/packages/path_provider/path_provider/example/test_driver/integration_test.dart +++ b/packages/path_provider/path_provider/example/test_driver/integration_test.dart @@ -4,15 +4,6 @@ // @dart=2.9 -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data) as Map; - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/path_provider/path_provider_linux/example/test_driver/integration_test.dart b/packages/path_provider/path_provider_linux/example/test_driver/integration_test.dart index 24a0ee720b2a..6a0e6fa82dbe 100644 --- a/packages/path_provider/path_provider_linux/example/test_driver/integration_test.dart +++ b/packages/path_provider/path_provider_linux/example/test_driver/integration_test.dart @@ -4,15 +4,6 @@ // @dart=2.9 -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data) as Map; - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/path_provider/path_provider_macos/example/test_driver/integration_test.dart b/packages/path_provider/path_provider_macos/example/test_driver/integration_test.dart index 24a0ee720b2a..6a0e6fa82dbe 100644 --- a/packages/path_provider/path_provider_macos/example/test_driver/integration_test.dart +++ b/packages/path_provider/path_provider_macos/example/test_driver/integration_test.dart @@ -4,15 +4,6 @@ // @dart=2.9 -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data) as Map; - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/path_provider/path_provider_windows/example/test_driver/integration_test.dart b/packages/path_provider/path_provider_windows/example/test_driver/integration_test.dart index 24a0ee720b2a..6a0e6fa82dbe 100644 --- a/packages/path_provider/path_provider_windows/example/test_driver/integration_test.dart +++ b/packages/path_provider/path_provider_windows/example/test_driver/integration_test.dart @@ -4,15 +4,6 @@ // @dart=2.9 -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data) as Map; - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/quick_actions/quick_actions/example/test_driver/integration_test.dart b/packages/quick_actions/quick_actions/example/test_driver/integration_test.dart index 4c4c006068b8..6a0e6fa82dbe 100644 --- a/packages/quick_actions/quick_actions/example/test_driver/integration_test.dart +++ b/packages/quick_actions/quick_actions/example/test_driver/integration_test.dart @@ -2,17 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +// @dart=2.9 -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); diff --git a/packages/sensors/example/test_driver/test/integration_test.dart b/packages/sensors/example/test_driver/test/integration_test.dart index 257b0d3c0930..6a0e6fa82dbe 100644 --- a/packages/sensors/example/test_driver/test/integration_test.dart +++ b/packages/sensors/example/test_driver/test/integration_test.dart @@ -2,18 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/share/example/test_driver/test/integration_test.dart b/packages/share/example/test_driver/test/integration_test.dart index 257b0d3c0930..6a0e6fa82dbe 100644 --- a/packages/share/example/test_driver/test/integration_test.dart +++ b/packages/share/example/test_driver/test/integration_test.dart @@ -2,18 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/shared_preferences/shared_preferences/example/test_driver/integration_test.dart b/packages/shared_preferences/shared_preferences/example/test_driver/integration_test.dart index 18ed3cff3ee8..6a0e6fa82dbe 100644 --- a/packages/shared_preferences/shared_preferences/example/test_driver/integration_test.dart +++ b/packages/shared_preferences/shared_preferences/example/test_driver/integration_test.dart @@ -4,16 +4,6 @@ // @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/shared_preferences/shared_preferences_linux/example/test_driver/integration_test.dart b/packages/shared_preferences/shared_preferences_linux/example/test_driver/integration_test.dart index 18ed3cff3ee8..6a0e6fa82dbe 100644 --- a/packages/shared_preferences/shared_preferences_linux/example/test_driver/integration_test.dart +++ b/packages/shared_preferences/shared_preferences_linux/example/test_driver/integration_test.dart @@ -4,16 +4,6 @@ // @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/shared_preferences/shared_preferences_macos/example/test_driver/integration_test.dart b/packages/shared_preferences/shared_preferences_macos/example/test_driver/integration_test.dart index 18ed3cff3ee8..6a0e6fa82dbe 100644 --- a/packages/shared_preferences/shared_preferences_macos/example/test_driver/integration_test.dart +++ b/packages/shared_preferences/shared_preferences_macos/example/test_driver/integration_test.dart @@ -4,16 +4,6 @@ // @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/shared_preferences/shared_preferences_windows/example/test_driver/integration_test.dart b/packages/shared_preferences/shared_preferences_windows/example/test_driver/integration_test.dart index 18ed3cff3ee8..6a0e6fa82dbe 100644 --- a/packages/shared_preferences/shared_preferences_windows/example/test_driver/integration_test.dart +++ b/packages/shared_preferences/shared_preferences_windows/example/test_driver/integration_test.dart @@ -4,16 +4,6 @@ // @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/url_launcher/url_launcher/example/test_driver/integration_test.dart b/packages/url_launcher/url_launcher/example/test_driver/integration_test.dart index 053e985a78ce..6a0e6fa82dbe 100644 --- a/packages/url_launcher/url_launcher/example/test_driver/integration_test.dart +++ b/packages/url_launcher/url_launcher/example/test_driver/integration_test.dart @@ -2,19 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// TODO(egarciad): Remove once flutter_driver is migrated to null safety. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/url_launcher/url_launcher_linux/example/test_driver/integration_test.dart b/packages/url_launcher/url_launcher_linux/example/test_driver/integration_test.dart index 257b0d3c0930..6a0e6fa82dbe 100644 --- a/packages/url_launcher/url_launcher_linux/example/test_driver/integration_test.dart +++ b/packages/url_launcher/url_launcher_linux/example/test_driver/integration_test.dart @@ -2,18 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/url_launcher/url_launcher_macos/example/test_driver/integration_test.dart b/packages/url_launcher/url_launcher_macos/example/test_driver/integration_test.dart index 257b0d3c0930..6a0e6fa82dbe 100644 --- a/packages/url_launcher/url_launcher_macos/example/test_driver/integration_test.dart +++ b/packages/url_launcher/url_launcher_macos/example/test_driver/integration_test.dart @@ -2,18 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/url_launcher/url_launcher_web/example/test_driver/integration_test.dart b/packages/url_launcher/url_launcher_web/example/test_driver/integration_test.dart index f26b6a310cfe..4f10f2a522f3 100644 --- a/packages/url_launcher/url_launcher_web/example/test_driver/integration_test.dart +++ b/packages/url_launcher/url_launcher_web/example/test_driver/integration_test.dart @@ -4,4 +4,4 @@ import 'package:integration_test/integration_test_driver.dart'; -Future main() async => integrationDriver(); +Future main() => integrationDriver(); diff --git a/packages/url_launcher/url_launcher_windows/example/test_driver/integration_test.dart b/packages/url_launcher/url_launcher_windows/example/test_driver/integration_test.dart index 257b0d3c0930..6a0e6fa82dbe 100644 --- a/packages/url_launcher/url_launcher_windows/example/test_driver/integration_test.dart +++ b/packages/url_launcher/url_launcher_windows/example/test_driver/integration_test.dart @@ -2,18 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/video_player/video_player/example/test_driver/integration_test.dart b/packages/video_player/video_player/example/test_driver/integration_test.dart index 6a3ccada0232..6a0e6fa82dbe 100644 --- a/packages/video_player/video_player/example/test_driver/integration_test.dart +++ b/packages/video_player/video_player/example/test_driver/integration_test.dart @@ -2,19 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// TODO(egarciad): Remove once Flutter driver is migrated to null safety. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/webview_flutter/example/test_driver/integration_test.dart b/packages/webview_flutter/example/test_driver/integration_test.dart index 257b0d3c0930..6a0e6fa82dbe 100644 --- a/packages/webview_flutter/example/test_driver/integration_test.dart +++ b/packages/webview_flutter/example/test_driver/integration_test.dart @@ -2,18 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 +// @dart=2.9 -import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +import 'package:integration_test/integration_test_driver.dart'; -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +Future main() => integrationDriver(); diff --git a/packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/test/integration_test.dart b/packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/test/integration_test.dart index 9647a12d77ce..6a0e6fa82dbe 100644 --- a/packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/test/integration_test.dart +++ b/packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/test/integration_test.dart @@ -2,16 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 -import 'dart:convert'; -import 'dart:io'; -import 'package:flutter_driver/flutter_driver.dart'; +// @dart=2.9 -Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = - await driver.requestData(null, timeout: const Duration(minutes: 1)); - await driver.close(); - final Map result = jsonDecode(data); - exit(result['result'] == 'true' ? 0 : 1); -} +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); From 26de1bc8da1e61ae91313a6e843998064299ac01 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 10:31:12 -0400 Subject: [PATCH 04/14] Standardize location of test driver file --- .../example/test_driver/{test => }/integration_test.dart | 0 .../example/test_driver/{test => }/integration_test.dart | 0 .../{ => example}/test_driver/integration_test.dart | 0 .../example/test_driver/{test => }/integration_test.dart | 0 .../example/test_driver/{test => }/integration_test.dart | 0 .../sensors/example/test_driver/{test => }/integration_test.dart | 0 .../share/example/test_driver/{test => }/integration_test.dart | 0 .../example/test_driver/{test => }/integration_test.dart | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename packages/connectivity/connectivity/example/test_driver/{test => }/integration_test.dart (100%) rename packages/connectivity/connectivity_macos/example/test_driver/{test => }/integration_test.dart (100%) rename packages/google_sign_in/google_sign_in/{ => example}/test_driver/integration_test.dart (100%) rename packages/image_picker/image_picker/example/test_driver/{test => }/integration_test.dart (100%) rename packages/in_app_purchase/in_app_purchase/example/test_driver/{test => }/integration_test.dart (100%) rename packages/sensors/example/test_driver/{test => }/integration_test.dart (100%) rename packages/share/example/test_driver/{test => }/integration_test.dart (100%) rename packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/{test => }/integration_test.dart (100%) diff --git a/packages/connectivity/connectivity/example/test_driver/test/integration_test.dart b/packages/connectivity/connectivity/example/test_driver/integration_test.dart similarity index 100% rename from packages/connectivity/connectivity/example/test_driver/test/integration_test.dart rename to packages/connectivity/connectivity/example/test_driver/integration_test.dart diff --git a/packages/connectivity/connectivity_macos/example/test_driver/test/integration_test.dart b/packages/connectivity/connectivity_macos/example/test_driver/integration_test.dart similarity index 100% rename from packages/connectivity/connectivity_macos/example/test_driver/test/integration_test.dart rename to packages/connectivity/connectivity_macos/example/test_driver/integration_test.dart diff --git a/packages/google_sign_in/google_sign_in/test_driver/integration_test.dart b/packages/google_sign_in/google_sign_in/example/test_driver/integration_test.dart similarity index 100% rename from packages/google_sign_in/google_sign_in/test_driver/integration_test.dart rename to packages/google_sign_in/google_sign_in/example/test_driver/integration_test.dart diff --git a/packages/image_picker/image_picker/example/test_driver/test/integration_test.dart b/packages/image_picker/image_picker/example/test_driver/integration_test.dart similarity index 100% rename from packages/image_picker/image_picker/example/test_driver/test/integration_test.dart rename to packages/image_picker/image_picker/example/test_driver/integration_test.dart diff --git a/packages/in_app_purchase/in_app_purchase/example/test_driver/test/integration_test.dart b/packages/in_app_purchase/in_app_purchase/example/test_driver/integration_test.dart similarity index 100% rename from packages/in_app_purchase/in_app_purchase/example/test_driver/test/integration_test.dart rename to packages/in_app_purchase/in_app_purchase/example/test_driver/integration_test.dart diff --git a/packages/sensors/example/test_driver/test/integration_test.dart b/packages/sensors/example/test_driver/integration_test.dart similarity index 100% rename from packages/sensors/example/test_driver/test/integration_test.dart rename to packages/sensors/example/test_driver/integration_test.dart diff --git a/packages/share/example/test_driver/test/integration_test.dart b/packages/share/example/test_driver/integration_test.dart similarity index 100% rename from packages/share/example/test_driver/test/integration_test.dart rename to packages/share/example/test_driver/integration_test.dart diff --git a/packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/test/integration_test.dart b/packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/integration_test.dart similarity index 100% rename from packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/test/integration_test.dart rename to packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/integration_test.dart From 224d5101b30a36b3f0bc1812d0d9230d49cb48fe Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 10:39:33 -0400 Subject: [PATCH 05/14] Standardize location of integration_test directories --- .../integration_test/battery_test.dart | 0 .../integration_test/connectivity_test.dart | 0 .../integration_test/connectivity_test.dart | 27 ------------------ .../integration_test/connectivity_test.dart | 0 .../integration_test/google_sign_in_test.dart | 0 .../old_image_picker_test.dart | 0 .../in_app_purchase_test.dart | 0 .../integration_test/local_auth_test.dart | 0 .../integration_test/path_provider_test.dart | 18 ------------ .../integration_test/sensors_test.dart | 0 .../integration_test/share_test.dart | 0 .../integration_test/wifi_info_test.dart | 0 .../integration_test/wifi_info_test.dart | 28 ------------------- 13 files changed, 73 deletions(-) rename packages/battery/battery/{ => example}/integration_test/battery_test.dart (100%) rename packages/connectivity/connectivity/example/{test_driver => }/integration_test/connectivity_test.dart (100%) delete mode 100644 packages/connectivity/connectivity/integration_test/connectivity_test.dart rename packages/connectivity/connectivity_macos/example/{test_driver => }/integration_test/connectivity_test.dart (100%) rename packages/google_sign_in/google_sign_in/{ => example}/integration_test/google_sign_in_test.dart (100%) rename packages/image_picker/image_picker/{ => example}/integration_test/old_image_picker_test.dart (100%) rename packages/in_app_purchase/in_app_purchase/{ => example}/integration_test/in_app_purchase_test.dart (100%) rename packages/local_auth/{ => example}/integration_test/local_auth_test.dart (100%) delete mode 100644 packages/path_provider/path_provider/integration_test/path_provider_test.dart rename packages/sensors/{ => example}/integration_test/sensors_test.dart (100%) rename packages/share/{ => example}/integration_test/share_test.dart (100%) rename packages/wifi_info_flutter/wifi_info_flutter/{ => example}/integration_test/wifi_info_test.dart (100%) delete mode 100644 packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/integration_test/wifi_info_test.dart diff --git a/packages/battery/battery/integration_test/battery_test.dart b/packages/battery/battery/example/integration_test/battery_test.dart similarity index 100% rename from packages/battery/battery/integration_test/battery_test.dart rename to packages/battery/battery/example/integration_test/battery_test.dart diff --git a/packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart b/packages/connectivity/connectivity/example/integration_test/connectivity_test.dart similarity index 100% rename from packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart rename to packages/connectivity/connectivity/example/integration_test/connectivity_test.dart diff --git a/packages/connectivity/connectivity/integration_test/connectivity_test.dart b/packages/connectivity/connectivity/integration_test/connectivity_test.dart deleted file mode 100644 index 454ddd4c351b..000000000000 --- a/packages/connectivity/connectivity/integration_test/connectivity_test.dart +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// TODO(cyanglaz): Remove once https://github.com/flutter/plugins/pull/3158 is landed. -// @dart = 2.9 - -import 'package:integration_test/integration_test.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:connectivity/connectivity.dart'; - -void main() { - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - - group('Connectivity test driver', () { - Connectivity _connectivity; - - setUpAll(() async { - _connectivity = Connectivity(); - }); - - testWidgets('test connectivity result', (WidgetTester tester) async { - final ConnectivityResult result = await _connectivity.checkConnectivity(); - expect(result, isNotNull); - }); - }); -} diff --git a/packages/connectivity/connectivity_macos/example/test_driver/integration_test/connectivity_test.dart b/packages/connectivity/connectivity_macos/example/integration_test/connectivity_test.dart similarity index 100% rename from packages/connectivity/connectivity_macos/example/test_driver/integration_test/connectivity_test.dart rename to packages/connectivity/connectivity_macos/example/integration_test/connectivity_test.dart diff --git a/packages/google_sign_in/google_sign_in/integration_test/google_sign_in_test.dart b/packages/google_sign_in/google_sign_in/example/integration_test/google_sign_in_test.dart similarity index 100% rename from packages/google_sign_in/google_sign_in/integration_test/google_sign_in_test.dart rename to packages/google_sign_in/google_sign_in/example/integration_test/google_sign_in_test.dart diff --git a/packages/image_picker/image_picker/integration_test/old_image_picker_test.dart b/packages/image_picker/image_picker/example/integration_test/old_image_picker_test.dart similarity index 100% rename from packages/image_picker/image_picker/integration_test/old_image_picker_test.dart rename to packages/image_picker/image_picker/example/integration_test/old_image_picker_test.dart diff --git a/packages/in_app_purchase/in_app_purchase/integration_test/in_app_purchase_test.dart b/packages/in_app_purchase/in_app_purchase/example/integration_test/in_app_purchase_test.dart similarity index 100% rename from packages/in_app_purchase/in_app_purchase/integration_test/in_app_purchase_test.dart rename to packages/in_app_purchase/in_app_purchase/example/integration_test/in_app_purchase_test.dart diff --git a/packages/local_auth/integration_test/local_auth_test.dart b/packages/local_auth/example/integration_test/local_auth_test.dart similarity index 100% rename from packages/local_auth/integration_test/local_auth_test.dart rename to packages/local_auth/example/integration_test/local_auth_test.dart diff --git a/packages/path_provider/path_provider/integration_test/path_provider_test.dart b/packages/path_provider/path_provider/integration_test/path_provider_test.dart deleted file mode 100644 index 71550682444c..000000000000 --- a/packages/path_provider/path_provider/integration_test/path_provider_test.dart +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// @dart=2.9 - -import 'package:flutter_test/flutter_test.dart'; -import 'package:integration_test/integration_test.dart'; -import 'package:path_provider/path_provider.dart'; - -void main() { - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - - testWidgets('Can get temporary directory', (WidgetTester tester) async { - final String tempPath = (await getTemporaryDirectory()).path; - expect(tempPath, isNotEmpty); - }); -} diff --git a/packages/sensors/integration_test/sensors_test.dart b/packages/sensors/example/integration_test/sensors_test.dart similarity index 100% rename from packages/sensors/integration_test/sensors_test.dart rename to packages/sensors/example/integration_test/sensors_test.dart diff --git a/packages/share/integration_test/share_test.dart b/packages/share/example/integration_test/share_test.dart similarity index 100% rename from packages/share/integration_test/share_test.dart rename to packages/share/example/integration_test/share_test.dart diff --git a/packages/wifi_info_flutter/wifi_info_flutter/integration_test/wifi_info_test.dart b/packages/wifi_info_flutter/wifi_info_flutter/example/integration_test/wifi_info_test.dart similarity index 100% rename from packages/wifi_info_flutter/wifi_info_flutter/integration_test/wifi_info_test.dart rename to packages/wifi_info_flutter/wifi_info_flutter/example/integration_test/wifi_info_test.dart diff --git a/packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/integration_test/wifi_info_test.dart b/packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/integration_test/wifi_info_test.dart deleted file mode 100644 index 103be52aa56b..000000000000 --- a/packages/wifi_info_flutter/wifi_info_flutter/example/test_driver/integration_test/wifi_info_test.dart +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// @dart = 2.9 -import 'dart:io'; -import 'package:integration_test/integration_test.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:wifi_info_flutter/wifi_info_flutter.dart'; - -void main() { - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - - group('$WifiInfo test driver', () { - WifiInfo _wifiInfo; - - setUpAll(() async { - _wifiInfo = WifiInfo(); - }); - - testWidgets('test location methods, iOS only', (WidgetTester tester) async { - expect( - (await _wifiInfo.getLocationServiceAuthorization()), - LocationAuthorizationStatus.notDetermined, - ); - }, skip: !Platform.isIOS); - }); -} From 009619b7ffed2002491eae4b1b647b7a5c4772fc Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 10:43:13 -0400 Subject: [PATCH 06/14] Add missing test drivers --- .../battery/example/test_driver/integration_test.dart | 9 +++++++++ .../local_auth/example/test_driver/integration_test.dart | 9 +++++++++ 2 files changed, 18 insertions(+) create mode 100644 packages/battery/battery/example/test_driver/integration_test.dart create mode 100644 packages/local_auth/example/test_driver/integration_test.dart diff --git a/packages/battery/battery/example/test_driver/integration_test.dart b/packages/battery/battery/example/test_driver/integration_test.dart new file mode 100644 index 000000000000..6a0e6fa82dbe --- /dev/null +++ b/packages/battery/battery/example/test_driver/integration_test.dart @@ -0,0 +1,9 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// @dart=2.9 + +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); diff --git a/packages/local_auth/example/test_driver/integration_test.dart b/packages/local_auth/example/test_driver/integration_test.dart new file mode 100644 index 000000000000..6a0e6fa82dbe --- /dev/null +++ b/packages/local_auth/example/test_driver/integration_test.dart @@ -0,0 +1,9 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// @dart=2.9 + +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); From 4da3938b4c5e20dd54ea5ca652f82306fd9b5acd Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 11:11:37 -0400 Subject: [PATCH 07/14] Skip missing iOS integration test, with issue link --- .cirrus.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index 125e2dac4872..f742067b2dd3 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -207,6 +207,8 @@ task: env: PATH: $PATH:/usr/local/bin PLUGINS_TO_SKIP_XCTESTS: "integration_test" + # Currently missing; see https://github.com/flutter/flutter/issues/81695 + PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS: "in_app_purchase_ios" matrix: PLUGIN_SHARDING: "--shardIndex 0 --shardCount 4" PLUGIN_SHARDING: "--shardIndex 1 --shardCount 4" @@ -227,7 +229,7 @@ task: # `drive-examples` contains integration tests, which changes the UI of the application. # This UI change sometimes affects `xctest`. # So we run `drive-examples` after `xctest`, changing the order will result ci failure. - - ./script/incremental_build.sh drive-examples --ios + - ./script/incremental_build.sh drive-examples --ios --exclude $PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS ### macOS desktop tasks ### - name: build_all_plugins_macos env: From 657d0a1d8bba8c467bd1742b4cae44d4403682ee Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 11:12:21 -0400 Subject: [PATCH 08/14] Explicitly skip platform interfaces to reduce noise in logging --- script/tool/lib/src/drive_examples_command.dart | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/script/tool/lib/src/drive_examples_command.dart b/script/tool/lib/src/drive_examples_command.dart index 6c60a23513bb..898e6ce84856 100644 --- a/script/tool/lib/src/drive_examples_command.dart +++ b/script/tool/lib/src/drive_examples_command.dart @@ -59,6 +59,13 @@ class DriveExamplesCommand extends PluginCommand { final bool isWindows = argResults[kWindows] == true; await for (final Directory plugin in getPlugins()) { final String pluginName = plugin.basename; + if (pluginName.endsWith('_platform_interface') && + !plugin.childDirectory('example').existsSync()) { + // Platform interface packages generally aren't intended to have + // examples, and don't need integration tests, so silently skip them + // unless for some reason there is an example directory. + continue; + } print('\n==========\nChecking $pluginName...'); if (!(await _pluginSupportedOnCurrentPlatform(plugin, fileSystem))) { print('Not supported for the target platform; skipping.'); From 79533c6248c2d058e42cb233f62676098e6e0f45 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 11:22:19 -0400 Subject: [PATCH 09/14] Skip missing web tests with issue link --- .cirrus.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index f742067b2dd3..c3d4a20226f1 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -171,6 +171,8 @@ task: ### Web tasks ### - name: build-web+drive-examples env: + # Currently missing; see https://github.com/flutter/flutter/issues/81982 + PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS: "image_picker_for_web,shared_preferences_web,video_player_web" matrix: CHANNEL: "master" CHANNEL: "stable" @@ -185,7 +187,7 @@ task: drive_script: # TODO(stuartmorgan): Eliminate this check once 2.1 reaches stable. - if [[ "$CHANNEL" == "master" ]]; then - - ./script/incremental_build.sh drive-examples --web + - ./script/incremental_build.sh drive-examples --web --exclude $PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS - else - echo "Requires null-safe integration_test; skipping." - fi From 7359e43c622fc0e9e742d7354f114a706ef6465d Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 11:51:40 -0400 Subject: [PATCH 10/14] Fix up existing tool tests for output change --- .../tool/test/drive_examples_command_test.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/script/tool/test/drive_examples_command_test.dart b/script/tool/test/drive_examples_command_test.dart index c5960b2c342e..493cf15bfcad 100644 --- a/script/tool/test/drive_examples_command_test.dart +++ b/script/tool/test/drive_examples_command_test.dart @@ -55,6 +55,7 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', '\n\n', 'All driver tests successful!', ]), @@ -100,6 +101,7 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', '\n\n', 'All driver tests successful!', ]), @@ -168,6 +170,7 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', '\n\n', 'All driver tests successful!', ]), @@ -223,6 +226,8 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', + 'Not supported for the target platform; skipping.', '\n\n', 'All driver tests successful!', ]), @@ -255,6 +260,7 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', '\n\n', 'All driver tests successful!', ]), @@ -300,6 +306,8 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', + 'Not supported for the target platform; skipping.', '\n\n', 'All driver tests successful!', ]), @@ -332,6 +340,7 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', '\n\n', 'All driver tests successful!', ]), @@ -379,6 +388,8 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', + 'Not supported for the target platform; skipping.', '\n\n', 'All driver tests successful!', ]), @@ -411,6 +422,7 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', '\n\n', 'All driver tests successful!', ]), @@ -460,6 +472,8 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', + 'Not supported for the target platform; skipping.', '\n\n', 'All driver tests successful!', ]), @@ -492,6 +506,7 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', '\n\n', 'All driver tests successful!', ]), @@ -538,6 +553,8 @@ void main() { expect( output, orderedEquals([ + '\n==========\nChecking plugin...', + 'Not supported for the target platform; skipping.', '\n\n', 'All driver tests successful!', ]), From c8c61e7dca6e37499dfebb755a888eb78ed40350 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 11:57:30 -0400 Subject: [PATCH 11/14] Add new tool tests for changes --- .../test/drive_examples_command_test.dart | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/script/tool/test/drive_examples_command_test.dart b/script/tool/test/drive_examples_command_test.dart index 493cf15bfcad..5ba8d8af25ff 100644 --- a/script/tool/test/drive_examples_command_test.dart +++ b/script/tool/test/drive_examples_command_test.dart @@ -145,6 +145,25 @@ void main() { throwsA(const TypeMatcher())); }); + test('a plugin without any integration test files is reported as an error', + () async { + createFakePlugin('plugin', + withExtraFiles: >[ + ['example', 'lib', 'main.dart'], + ], + isAndroidPlugin: true, + isIosPlugin: true); + + final Directory pluginExampleDirectory = + mockPackagesDir.childDirectory('plugin').childDirectory('example'); + + createFakePubspec(pluginExampleDirectory, isFlutter: true); + + await expectLater( + () => runCapturingPrint(runner, ['drive-examples']), + throwsA(const TypeMatcher())); + }); + test( 'driving under folder "test_driver" when targets are under "integration_test"', () async { @@ -566,6 +585,27 @@ void main() { expect(processRunner.recordedCalls, []); }); + test('platform interface plugins are silently skipped', () async { + createFakePlugin('aplugin_platform_interface'); + + final List output = await runCapturingPrint(runner, [ + 'drive-examples', + ]); + + expect( + output, + orderedEquals([ + '\n\n', + 'All driver tests successful!', + ]), + ); + + print(processRunner.recordedCalls); + // Output should be empty since running drive-examples --macos with no macos + // implementation is a no-op. + expect(processRunner.recordedCalls, []); + }); + test('enable-experiment flag', () async { createFakePlugin('plugin', withExtraFiles: >[ From 963679cbf57c83c6a6d872676d0ddbfcfb397f38 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 12:45:49 -0400 Subject: [PATCH 12/14] Fix iOS battery integration test to pass on simulator --- .../example/integration_test/battery_test.dart | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/battery/battery/example/integration_test/battery_test.dart b/packages/battery/battery/example/integration_test/battery_test.dart index 24f5a5adc7f9..1e0ad6656e7f 100644 --- a/packages/battery/battery/example/integration_test/battery_test.dart +++ b/packages/battery/battery/example/integration_test/battery_test.dart @@ -4,6 +4,7 @@ // @dart = 2.9 +import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:battery/battery.dart'; import 'package:integration_test/integration_test.dart'; @@ -13,7 +14,18 @@ void main() { testWidgets('Can get battery level', (WidgetTester tester) async { final Battery battery = Battery(); - final int batteryLevel = await battery.batteryLevel; + int batteryLevel; + try { + batteryLevel = await battery.batteryLevel; + } on PlatformException catch (e) { + // The "UNAVAIBLE" error just means that the system reported the battery + // level as unknown (e.g., the test is running on simulator); it still + // indicates that the plugin itself is working as expected, so consider it + // as passing. + if (e.code == 'UNAVAILABLE') { + batteryLevel = 1; + } + } expect(batteryLevel, isNotNull); }); } From 3d05c9323b456a87267efd1f53526f4b23752004 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Thu, 6 May 2021 18:34:17 -0400 Subject: [PATCH 13/14] Disable iOS sensors --- .cirrus.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index c3d4a20226f1..d22e05e51d7a 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -209,8 +209,9 @@ task: env: PATH: $PATH:/usr/local/bin PLUGINS_TO_SKIP_XCTESTS: "integration_test" - # Currently missing; see https://github.com/flutter/flutter/issues/81695 - PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS: "in_app_purchase_ios" + # in_app_purchase_ios is currently missing tests; see https://github.com/flutter/flutter/issues/81695 + # sensor hangs on CI. + PLUGINS_TO_EXCLUDE_INTEGRATION_TESTS: "in_app_purchase_ios,sensors" matrix: PLUGIN_SHARDING: "--shardIndex 0 --shardCount 4" PLUGIN_SHARDING: "--shardIndex 1 --shardCount 4" From aa610f0afbe0f9d12f7659023c9b293124456124 Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 10 May 2021 12:58:42 -0400 Subject: [PATCH 14/14] Whitespace in Dart version comment --- .../battery/battery/example/integration_test/battery_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/battery/battery/example/integration_test/battery_test.dart b/packages/battery/battery/example/integration_test/battery_test.dart index 1e0ad6656e7f..eced27e5a1cd 100644 --- a/packages/battery/battery/example/integration_test/battery_test.dart +++ b/packages/battery/battery/example/integration_test/battery_test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.9 +// @dart=2.9 import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart';