Revert "Revert "Revert "Restores surface size in the postTest of test binding (#87240)" (#87258)" (#87297)" (#88293)

This reverts commit 91f8b6be51.
This commit is contained in:
Tong Mu 2021-08-16 09:38:25 -07:00 committed by GitHub
parent e7f9bcba2d
commit 31d0787d20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 67 deletions

View File

@ -7,6 +7,8 @@
// initialize a binding, which rendering_tester will attempt to re-initialize
// (or vice versa).
import 'dart:ui' as ui;
import 'package:flutter/foundation.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
@ -779,6 +781,12 @@ void main() {
}
testWidgets('Reverse List showOnScreen', (WidgetTester tester) async {
final ui.Size originalScreenSize = tester.binding.window.physicalSize;
final double originalDevicePixelRatio = tester.binding.window.devicePixelRatio;
addTearDown(() {
tester.binding.window.devicePixelRatioTestValue = originalDevicePixelRatio;
tester.binding.window.physicalSizeTestValue = originalScreenSize;
});
const double screenHeight = 400.0;
const double screenWidth = 400.0;
const double itemHeight = screenHeight / 10.0;

View File

@ -163,21 +163,12 @@ abstract class TestWidgetsFlutterBinding extends BindingBase
}
TestRestorationManager? _restorationManager;
// The configuration at the beginning of a widget test to be restored after
// the test.
//
// Normally this value should always be non-null during [postTest], except in
// rare cases [postTest] is called explicitly without [testWidgets] (so that
// [reset] is not called).
ViewConfiguration? _preTestViewConfiguration;
/// Called by the test framework at the beginning of a widget test to
/// prepare the binding for the next test.
///
/// If [registerTestTextInput] returns true when this method is called,
/// the [testTextInput] is configured to simulate the keyboard.
void reset() {
assert(_surfaceSize == null);
_preTestViewConfiguration = renderView.configuration;
_restorationManager = null;
resetGestureBinding();
testTextInput.reset();
@ -951,16 +942,6 @@ abstract class TestWidgetsFlutterBinding extends BindingBase
'active mouse gesture to remove the mouse pointer.');
// ignore: invalid_use_of_visible_for_testing_member
RendererBinding.instance!.initMouseTracker();
// Reset _surfaceSize and renderView.configuration.
//
// The _surfaceSize and renderView.configuration might be set within a
// test, but such changes should not be carried over. The
// renderView.configuration might also be set outside of a test, which
// *should* be kept between tests. Don't use [handleMetricsChanged] because
// it contains unwanted side effects.
_surfaceSize = null;
if (_preTestViewConfiguration != null && _preTestViewConfiguration != renderView.configuration)
renderView.configuration = _preTestViewConfiguration!;
}
}

View File

@ -1,28 +0,0 @@
// 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 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
// This file contains tests for [testWidgets]. It is separated from bindings_test.dart
// because it relies on a persistent side effect (altered view configuration).
void main() {
final AutomatedTestWidgetsFlutterBinding binding = AutomatedTestWidgetsFlutterBinding();
group('testWidgets does not override pre-test viewConfiguration', () {
// Many tests are written in this way that a view configuration is set at
// the beginning of the file and is expected to take effect throughout the
// file.
binding.renderView.configuration = TestViewConfiguration(size: const Size(900, 900));
// Run the same test twice to ensure that the view configuration is as
// expected after a test.
for (int times = 1; times <= 2; times += 1) {
testWidgets('test $times', (WidgetTester tester) async {
expect(binding.renderView.configuration.size, const Size(900, 900));
});
}
});
}

View File

@ -33,26 +33,6 @@ void main() {
});
});
group('testWidgets resets the surface size', () {
// A setSurfaceSize in one test should not bleed into another test.
// The next two tests must run in order.
int order = 0;
testWidgets('prepare: one test called setSurfaceSize', (WidgetTester tester) async {
assert(order == 0);
// This test case is only for preparation. It doesn't need `expect`.
binding.setSurfaceSize(const Size(100, 100));
order += 1;
});
testWidgets('other tests should still have the default surface size', (WidgetTester tester) async {
assert(order == 1);
expect(binding.renderView.configuration.size, const Size(800, 600));
order += 1;
});
});
// The next three tests must run in order -- first using `test`, then `testWidgets`, then `test` again.
int order = 0;