Unverified Commit ea4e11dd authored by Siva's avatar Siva Committed by GitHub

Fix test in preparation of the Dart VM dropping support for language versions < 2.12.0 (#115176)

* Fix test in preparation of the Dart VM switching to being null safe by
default.

* Fix analyze error.

* Format.

* Remove print.

* Fix analyzer lint.

* Fix warnings.
parent f2ec1c45
...@@ -2,19 +2,17 @@ ...@@ -2,19 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart=2.9
// Running in unsound null-safety mode is intended to test for potential miscasts // Running in unsound null-safety mode is intended to test for potential miscasts
// or invalid assertions. // or invalid assertions.
import 'package:flutter/src/foundation/_isolates_io.dart'; import 'package:flutter/src/foundation/_isolates_io.dart';
import 'package:flutter/src/foundation/isolates.dart' as isolates; import 'package:flutter/src/foundation/isolates.dart' as isolates;
int? returnInt(int? arg) {
int returnInt(int arg) {
return arg; return arg;
} }
Future<int> returnIntAsync(int arg) { Future<int?> returnIntAsync(int? arg) {
return Future<int>.value(arg); return Future<int>.value(arg);
} }
......
...@@ -2,21 +2,20 @@ ...@@ -2,21 +2,20 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart=2.9
// Running in unsound null-safety mode is intended to test for potential miscasts // Running in unsound null-safety mode is intended to test for potential miscasts
// or invalid assertions. // or invalid assertions.
import 'package:flutter/src/foundation/_isolates_io.dart'; import 'package:flutter/src/foundation/_isolates_io.dart';
int throwNull(int arg) { int throwNull(dynamic arg) {
throw null; throw arg as Object;
} }
void main() async { void main() async {
try { try {
await compute(throwNull, null); await compute(throwNull, null);
} catch (e) { } catch (e) {
if (e is! NullThrownError) { if (e is! TypeError && e is! NullThrownError) {
throw Exception('compute returned bad result'); throw Exception('compute returned bad result');
} }
} }
......
...@@ -80,19 +80,25 @@ Future<int> test5CallCompute(int value) { ...@@ -80,19 +80,25 @@ Future<int> test5CallCompute(int value) {
return compute(test5, value); return compute(test5, value);
} }
Future<void> expectFileSuccessfullyCompletes(String filename) async { Future<void> expectFileSuccessfullyCompletes(String filename,
[bool unsound = false]) async {
// Run a Dart script that calls compute(). // Run a Dart script that calls compute().
// The Dart process will terminate only if the script exits cleanly with // The Dart process will terminate only if the script exits cleanly with
// all isolate ports closed. // all isolate ports closed.
const FileSystem fs = LocalFileSystem(); const FileSystem fs = LocalFileSystem();
const Platform platform = LocalPlatform(); const Platform platform = LocalPlatform();
final String flutterRoot = platform.environment['FLUTTER_ROOT']!; final String flutterRoot = platform.environment['FLUTTER_ROOT']!;
final String dartPath = fs.path.join(flutterRoot, 'bin', 'cache', 'dart-sdk', 'bin', 'dart'); final String dartPath =
fs.path.join(flutterRoot, 'bin', 'cache', 'dart-sdk', 'bin', 'dart');
final String packageRoot = fs.path.dirname(fs.path.fromUri(platform.script)); final String packageRoot = fs.path.dirname(fs.path.fromUri(platform.script));
final String scriptPath = fs.path.join(packageRoot, 'test', 'foundation', filename); final String scriptPath =
fs.path.join(packageRoot, 'test', 'foundation', filename);
final String nullSafetyArg =
unsound ? '--no-sound-null-safety' : '--sound-null-safety';
// Enable asserts to also catch potentially invalid assertions. // Enable asserts to also catch potentially invalid assertions.
final ProcessResult result = await Process.run(dartPath, <String>['run', '--enable-asserts', scriptPath]); final ProcessResult result = await Process.run(
dartPath, <String>[nullSafetyArg, 'run', '--enable-asserts', scriptPath]);
expect(result.exitCode, 0); expect(result.exitCode, 0);
} }
...@@ -194,7 +200,8 @@ void main() { ...@@ -194,7 +200,8 @@ void main() {
expect(await computeInstanceMethod(10), 100); expect(await computeInstanceMethod(10), 100);
expect(computeInvalidInstanceMethod(10), throwsArgumentError); expect(computeInvalidInstanceMethod(10), throwsArgumentError);
expect(await compute(testDebugName, null, debugLabel: 'debug_name'), 'debug_name'); expect(await compute(testDebugName, null, debugLabel: 'debug_name'),
'debug_name');
expect(await compute(testReturnNull, null), null); expect(await compute(testReturnNull, null), null);
}, skip: kIsWeb); // [intended] isn't supported on the web. }, skip: kIsWeb); // [intended] isn't supported on the web.
...@@ -203,22 +210,26 @@ void main() { ...@@ -203,22 +210,26 @@ void main() {
await expectFileSuccessfullyCompletes('_compute_caller.dart'); await expectFileSuccessfullyCompletes('_compute_caller.dart');
}); });
test('with invalid message', () async { test('with invalid message', () async {
await expectFileSuccessfullyCompletes('_compute_caller_invalid_message.dart'); await expectFileSuccessfullyCompletes(
'_compute_caller_invalid_message.dart');
}); });
test('with valid error', () async { test('with valid error', () async {
await expectFileSuccessfullyCompletes('_compute_caller.dart'); await expectFileSuccessfullyCompletes('_compute_caller.dart');
}); });
test('with invalid error', () async { test('with invalid error', () async {
await expectFileSuccessfullyCompletes('_compute_caller_invalid_message.dart'); await expectFileSuccessfullyCompletes(
'_compute_caller_invalid_message.dart');
}); });
}, skip: kIsWeb); // [intended] isn't supported on the web. }, skip: kIsWeb); // [intended] isn't supported on the web.
group('compute() works with unsound null safety caller', () { group('compute() works with unsound null safety caller', () {
test('returning', () async { test('returning', () async {
await expectFileSuccessfullyCompletes('_compute_caller_unsound_null_safety.dart'); await expectFileSuccessfullyCompletes(
'_compute_caller_unsound_null_safety.dart', true);
}); });
test('erroring', () async { test('erroring', () async {
await expectFileSuccessfullyCompletes('_compute_caller_unsound_null_safety_error.dart'); await expectFileSuccessfullyCompletes(
'_compute_caller_unsound_null_safety_error.dart', true);
}); });
}, skip: kIsWeb); // [intended] isn't supported on the web. }, skip: kIsWeb); // [intended] isn't supported on the web.
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment