Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit b4466e7

Browse files
authored
Fix test exclusion logic for nnbd plugins (#3342)
1 parent b289e1a commit b4466e7

File tree

20 files changed

+91
-42
lines changed

20 files changed

+91
-42
lines changed

.cirrus.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,16 @@ task:
3939
- flutter channel $CHANNEL
4040
- ./script/incremental_build.sh test
4141
- name: analyze
42+
env:
43+
matrix:
44+
CHANNEL: "master"
45+
CHANNEL: "stable"
4246
script: ./script/incremental_build.sh analyze
4347
- name: build_all_plugins_apk
48+
env:
49+
matrix:
50+
CHANNEL: "master"
51+
CHANNEL: "stable"
4452
script:
4553
# TODO(jackson): Allow web plugins once supported on stable
4654
# https://github.com/flutter/flutter/issues/42864
@@ -144,6 +152,10 @@ task:
144152
- xcrun simctl create Flutter-iPhone com.apple.CoreSimulator.SimDeviceType.iPhone-X com.apple.CoreSimulator.SimRuntime.iOS-13-3 | xargs xcrun simctl boot
145153
matrix:
146154
- name: build_all_plugins_ipa
155+
env:
156+
matrix:
157+
CHANNEL: "master"
158+
CHANNEL: "stable"
147159
script:
148160
# TODO(jackson): Allow web plugins once supported on stable
149161
# https://github.com/flutter/flutter/issues/42864

packages/android_intent/test/android_intent_test.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
// @dart = 2.9
6+
57
import 'package:android_intent/flag.dart';
68
import 'package:flutter/services.dart';
79
import 'package:flutter_test/flutter_test.dart';
@@ -11,7 +13,8 @@ import 'package:platform/platform.dart';
1113

1214
void main() {
1315
AndroidIntent androidIntent;
14-
late MockMethodChannel mockChannel;
16+
MockMethodChannel mockChannel;
17+
1518
setUp(() {
1619
mockChannel = MockMethodChannel();
1720
when(mockChannel.invokeMethod<bool>('canResolveActivity', any))

packages/flutter_plugin_android_lifecycle/example/integration_test/flutter_plugin_android_lifecycle_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5+
// @dart = 2.9
6+
57
import 'package:flutter_test/flutter_test.dart';
68
import 'package:integration_test/integration_test.dart';
79
import 'package:flutter_plugin_android_lifecycle_example/main.dart';

packages/flutter_plugin_android_lifecycle/example/lib/main.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
// Copyright 2019, the Chromium project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
15
// ignore_for_file: public_member_api_docs
26

37
import 'package:flutter/material.dart';
Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
name: flutter_plugin_android_lifecycle_example
22
description: Demonstrates how to use the flutter_plugin_android_lifecycle plugin.
3-
publish_to: 'none'
4-
5-
environment:
6-
sdk: ">=2.12.0-0 <3.0.0"
73

84
dependencies:
95
flutter:
106
sdk: flutter
11-
integration_test:
12-
path: ../../integration_test
7+
flutter_plugin_android_lifecycle:
8+
path: ../
139

1410
dev_dependencies:
11+
integration_test:
12+
path: ../../integration_test
1513
flutter_test:
1614
sdk: flutter
1715
pedantic: ^1.8.0
1816

19-
flutter_plugin_android_lifecycle:
20-
path: ../
17+
environment:
18+
sdk: ">=2.12.0-0 <3.0.0"
2119

2220
flutter:
2321
uses-material-design: true

packages/local_auth/example/lib/main.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,17 @@ class MyApp extends StatefulWidget {
2121

2222
class _MyAppState extends State<MyApp> {
2323
final LocalAuthentication auth = LocalAuthentication();
24-
bool _canCheckBiometrics;
25-
List<BiometricType> _availableBiometrics;
24+
late bool _canCheckBiometrics;
25+
late List<BiometricType> _availableBiometrics;
2626
String _authorized = 'Not Authorized';
2727
bool _isAuthenticating = false;
2828

2929
Future<void> _checkBiometrics() async {
30-
bool canCheckBiometrics;
30+
late bool canCheckBiometrics;
3131
try {
3232
canCheckBiometrics = await auth.canCheckBiometrics;
3333
} on PlatformException catch (e) {
34+
canCheckBiometrics = false;
3435
print(e);
3536
}
3637
if (!mounted) return;
@@ -41,10 +42,11 @@ class _MyAppState extends State<MyApp> {
4142
}
4243

4344
Future<void> _getAvailableBiometrics() async {
44-
List<BiometricType> availableBiometrics;
45+
late List<BiometricType> availableBiometrics;
4546
try {
4647
availableBiometrics = await auth.getAvailableBiometrics();
4748
} on PlatformException catch (e) {
49+
availableBiometrics = <BiometricType>[];
4850
print(e);
4951
}
5052
if (!mounted) return;

packages/local_auth/example/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ flutter:
1818
uses-material-design: true
1919

2020
environment:
21-
sdk: ">=2.1.0 <3.0.0"
21+
sdk: ">=2.12.0-0 <3.0.0"
2222
flutter: ">=1.12.13+hotfix.5 <2.0.0"

packages/local_auth/integration_test/local_auth_test.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
// Copyright 2017 The Chromium Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
// @dart = 2.9
6+
17
import 'package:flutter_test/flutter_test.dart';
28
import 'package:integration_test/integration_test.dart';
39

packages/share/integration_test/share_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5+
// @dart = 2.9
6+
57
import 'package:flutter_test/flutter_test.dart';
68
import 'package:share/share.dart';
79
import 'package:integration_test/integration_test.dart';

packages/share/test/share_test.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
// @dart = 2.9
6+
57
import 'dart:io';
68
import 'dart:ui';
79

@@ -15,7 +17,7 @@ import 'package:flutter/services.dart';
1517
void main() {
1618
TestWidgetsFlutterBinding.ensureInitialized();
1719

18-
late MockMethodChannel mockChannel;
20+
MockMethodChannel mockChannel;
1921

2022
setUp(() {
2123
mockChannel = MockMethodChannel();

packages/webview_flutter/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.0.0-nullsafety.3
2+
3+
* Fix `onWebResourceError` on iOS.
4+
15
## 2.0.0-nullsafety.2
26

37
* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276))

packages/webview_flutter/example/integration_test/webview_flutter_test.dart

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5+
// @dart = 2.9
6+
57
import 'dart:async';
68
import 'dart:convert';
79
import 'dart:io';
@@ -358,12 +360,12 @@ void main() {
358360
videoTestBase64 = base64Encode(const Utf8Encoder().convert(videoTest));
359361
});
360362

361-
test('Auto media playback', () async {
363+
testWidgets('Auto media playback', (WidgetTester tester) async {
362364
Completer<WebViewController> controllerCompleter =
363365
Completer<WebViewController>();
364366
Completer<void> pageLoaded = Completer<void>();
365367

366-
await pumpWidget(
368+
await tester.pumpWidget(
367369
Directionality(
368370
textDirection: TextDirection.ltr,
369371
child: WebView(
@@ -390,7 +392,7 @@ void main() {
390392
pageLoaded = Completer<void>();
391393

392394
// We change the key to re-create a new webview as we change the initialMediaPlaybackPolicy
393-
await pumpWidget(
395+
await tester.pumpWidget(
394396
Directionality(
395397
textDirection: TextDirection.ltr,
396398
child: WebView(
@@ -414,15 +416,16 @@ void main() {
414416

415417
isPaused = await controller.evaluateJavascript('isPaused();');
416418
expect(isPaused, _webviewBool(true));
417-
});
419+
}, skip: true /* https://github.com/flutter/flutter/issues/72572 */);
418420

419-
test('Changes to initialMediaPlaybackPolicy are ignored', () async {
421+
testWidgets('Changes to initialMediaPlaybackPolicy are ignored',
422+
(WidgetTester tester) async {
420423
final Completer<WebViewController> controllerCompleter =
421424
Completer<WebViewController>();
422425
Completer<void> pageLoaded = Completer<void>();
423426

424427
final GlobalKey key = GlobalKey();
425-
await pumpWidget(
428+
await tester.pumpWidget(
426429
Directionality(
427430
textDirection: TextDirection.ltr,
428431
child: WebView(
@@ -447,7 +450,7 @@ void main() {
447450

448451
pageLoaded = Completer<void>();
449452

450-
await pumpWidget(
453+
await tester.pumpWidget(
451454
Directionality(
452455
textDirection: TextDirection.ltr,
453456
child: WebView(
@@ -472,14 +475,15 @@ void main() {
472475

473476
isPaused = await controller.evaluateJavascript('isPaused();');
474477
expect(isPaused, _webviewBool(false));
475-
});
478+
}, skip: true /* https://github.com/flutter/flutter/issues/72572 */);
476479

477-
test('Video plays inline when allowsInlineMediaPlayback is true', () async {
480+
testWidgets('Video plays inline when allowsInlineMediaPlayback is true',
481+
(WidgetTester tester) async {
478482
Completer<WebViewController> controllerCompleter =
479483
Completer<WebViewController>();
480484
Completer<void> pageLoaded = Completer<void>();
481485

482-
await pumpWidget(
486+
await tester.pumpWidget(
483487
Directionality(
484488
textDirection: TextDirection.ltr,
485489
child: WebView(
@@ -507,7 +511,7 @@ void main() {
507511
controllerCompleter = Completer<WebViewController>();
508512
pageLoaded = Completer<void>();
509513

510-
await pumpWidget(
514+
await tester.pumpWidget(
511515
Directionality(
512516
textDirection: TextDirection.ltr,
513517
child: WebView(
@@ -531,7 +535,7 @@ void main() {
531535

532536
isFullScreen = await controller.evaluateJavascript('isFullScreen();');
533537
expect(isFullScreen, _webviewBool(true));
534-
});
538+
}, skip: true /* https://github.com/flutter/flutter/issues/72572 */);
535539
});
536540

537541
group('Audio playback policy', () {
@@ -631,7 +635,7 @@ void main() {
631635

632636
isPaused = await controller.evaluateJavascript('isPaused();');
633637
expect(isPaused, _webviewBool(true));
634-
});
638+
}, skip: true /* https://github.com/flutter/flutter/issues/72572 */);
635639

636640
testWidgets('Changes to initialMediaPlaybackPolocy are ignored',
637641
(WidgetTester tester) async {
@@ -700,7 +704,7 @@ void main() {
700704

701705
isPaused = await controller.evaluateJavascript('isPaused();');
702706
expect(isPaused, _webviewBool(false));
703-
});
707+
}, skip: true /* https://github.com/flutter/flutter/issues/72572 */);
704708
});
705709

706710
testWidgets('getTitle', (WidgetTester tester) async {

packages/webview_flutter/example/lib/main.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class _WebViewExampleState extends State<WebViewExample> {
105105
if (controller.hasData) {
106106
return FloatingActionButton(
107107
onPressed: () async {
108-
final String url = await controller.data.currentUrl();
108+
final String url = (await controller.data!.currentUrl())!;
109109
// ignore: deprecated_member_use
110110
Scaffold.of(context).showSnackBar(
111111
SnackBar(content: Text('Favorited $url')),
@@ -145,25 +145,25 @@ class SampleMenu extends StatelessWidget {
145145
onSelected: (MenuOptions value) {
146146
switch (value) {
147147
case MenuOptions.showUserAgent:
148-
_onShowUserAgent(controller.data, context);
148+
_onShowUserAgent(controller.data!, context);
149149
break;
150150
case MenuOptions.listCookies:
151-
_onListCookies(controller.data, context);
151+
_onListCookies(controller.data!, context);
152152
break;
153153
case MenuOptions.clearCookies:
154154
_onClearCookies(context);
155155
break;
156156
case MenuOptions.addToCache:
157-
_onAddToCache(controller.data, context);
157+
_onAddToCache(controller.data!, context);
158158
break;
159159
case MenuOptions.listCache:
160-
_onListCache(controller.data, context);
160+
_onListCache(controller.data!, context);
161161
break;
162162
case MenuOptions.clearCache:
163-
_onClearCache(controller.data, context);
163+
_onClearCache(controller.data!, context);
164164
break;
165165
case MenuOptions.navigationDelegate:
166-
_onNavigationDelegateExample(controller.data, context);
166+
_onNavigationDelegateExample(controller.data!, context);
167167
break;
168168
}
169169
},
@@ -299,7 +299,7 @@ class NavigationControls extends StatelessWidget {
299299
(BuildContext context, AsyncSnapshot<WebViewController> snapshot) {
300300
final bool webViewReady =
301301
snapshot.connectionState == ConnectionState.done;
302-
final WebViewController controller = snapshot.data;
302+
final WebViewController controller = snapshot.data!;
303303
return Row(
304304
children: <Widget>[
305305
IconButton(

packages/webview_flutter/example/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: webview_flutter_example
22
description: Demonstrates how to use the webview_flutter plugin.
33

44
environment:
5-
sdk: ">=2.0.0-dev.68.0 <3.0.0"
5+
sdk: ">=2.12.0-0 <3.0.0"
66

77
dependencies:
88
flutter:

packages/webview_flutter/example/test_driver/integration_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5+
// @dart = 2.9
6+
57
import 'dart:async';
68
import 'dart:convert';
79
import 'dart:io';

packages/webview_flutter/lib/src/webview_method_channel.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController {
4848
WebResourceError(
4949
errorCode: call.arguments['errorCode']!,
5050
description: call.arguments['description']!,
51-
failingUrl: call.arguments['failingUrl']!,
51+
// iOS doesn't support `failingUrl`.
52+
failingUrl: call.arguments['failingUrl'],
5253
domain: call.arguments['domain'],
5354
errorType: call.arguments['errorType'] == null
5455
? null

packages/webview_flutter/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: webview_flutter
22
description: A Flutter plugin that provides a WebView widget on Android and iOS.
3-
version: 2.0.0-nullsafety.2
3+
version: 2.0.0-nullsafety.3
44
homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter
55

66
environment:

0 commit comments

Comments
 (0)