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.
This commit is contained in:
parent
f2ec1c459f
commit
ea4e11dd9b
@ -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 @@
|
|||||||
// 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) {
|
|||||||
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() {
|
|||||||
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() {
|
|||||||
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.
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user