mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
This auto-formats all *.dart files in the repository outside of the `engine` subdirectory and enforces that these files stay formatted with a presubmit check. **Reviewers:** Please carefully review all the commits except for the one titled "formatted". The "formatted" commit was auto-generated by running `dev/tools/format.sh -a -f`. The other commits were hand-crafted to prepare the repo for the formatting change. I recommend reviewing the commits one-by-one via the "Commits" tab and avoiding Github's "Files changed" tab as it will likely slow down your browser because of the size of this PR. --------- Co-authored-by: Kate Lovett <katelovett@google.com> Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com>
66 lines
2.8 KiB
Dart
66 lines
2.8 KiB
Dart
// Copyright 2014 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.
|
|
|
|
import 'dart:async';
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
class TestBinding extends BindingBase {}
|
|
|
|
void main() {
|
|
test('BindingBase.debugCheckZone', () async {
|
|
final BindingBase binding = TestBinding();
|
|
binding.debugCheckZone('test1');
|
|
BindingBase.debugZoneErrorsAreFatal = true;
|
|
Zone.current.fork().run(() {
|
|
try {
|
|
binding.debugCheckZone('test2');
|
|
fail('expected an exception');
|
|
} catch (error) {
|
|
expect(error, isA<FlutterError>());
|
|
expect(
|
|
error.toString(),
|
|
'Zone mismatch.\n'
|
|
'The Flutter bindings were initialized in a different zone than is now being used. '
|
|
'This will likely cause confusion and bugs as any zone-specific configuration will '
|
|
'inconsistently use the configuration of the original binding initialization zone '
|
|
'or this zone based on hard-to-predict factors such as which zone was active when '
|
|
'a particular callback was set.\n'
|
|
'It is important to use the same zone when calling `ensureInitialized` on the '
|
|
'binding as when calling `test2` later.\n'
|
|
'To make this error non-fatal, set BindingBase.debugZoneErrorsAreFatal to false '
|
|
'before the bindings are initialized (i.e. as the first statement in `void main() { }`).',
|
|
);
|
|
}
|
|
});
|
|
BindingBase.debugZoneErrorsAreFatal = false;
|
|
Zone.current.fork().run(() {
|
|
bool sawError = false;
|
|
final FlutterExceptionHandler? lastHandler = FlutterError.onError;
|
|
FlutterError.onError = (FlutterErrorDetails details) {
|
|
final Object error = details.exception;
|
|
expect(error, isA<FlutterError>());
|
|
expect(
|
|
error.toString(),
|
|
'Zone mismatch.\n'
|
|
'The Flutter bindings were initialized in a different zone than is now being used. '
|
|
'This will likely cause confusion and bugs as any zone-specific configuration will '
|
|
'inconsistently use the configuration of the original binding initialization zone '
|
|
'or this zone based on hard-to-predict factors such as which zone was active when '
|
|
'a particular callback was set.\n'
|
|
'It is important to use the same zone when calling `ensureInitialized` on the '
|
|
'binding as when calling `test3` later.\n'
|
|
'To make this warning fatal, set BindingBase.debugZoneErrorsAreFatal to true '
|
|
'before the bindings are initialized (i.e. as the first statement in `void main() { }`).',
|
|
);
|
|
sawError = true;
|
|
};
|
|
binding.debugCheckZone('test3');
|
|
expect(sawError, isTrue);
|
|
FlutterError.onError = lastHandler;
|
|
});
|
|
});
|
|
}
|