mirror of
https://github.com/flutter/flutter
synced 2024-10-13 19:52:53 +00:00
64 lines
2 KiB
Dart
64 lines
2 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_tools/src/base/file_system.dart';
|
|
|
|
import '../src/common.dart';
|
|
import 'test_data/single_widget_reload_project.dart';
|
|
import 'test_driver.dart';
|
|
import 'test_utils.dart';
|
|
|
|
void main() {
|
|
Directory tempDir;
|
|
final SingleWidgetReloadProject project = SingleWidgetReloadProject();
|
|
FlutterRunTestDriver flutter;
|
|
|
|
setUp(() async {
|
|
tempDir = createResolvedTempDirectorySync('hot_reload_test.');
|
|
await project.setUpIn(tempDir);
|
|
flutter = FlutterRunTestDriver(tempDir);
|
|
});
|
|
|
|
tearDown(() async {
|
|
await flutter?.stop();
|
|
tryToDelete(tempDir);
|
|
});
|
|
|
|
testWithoutContext('newly added code executes during hot reload with single widget reloads, but only invalidated widget', () async {
|
|
final StringBuffer stdout = StringBuffer();
|
|
final StreamSubscription<String> subscription = flutter.stdout.listen(stdout.writeln);
|
|
await flutter.run(singleWidgetReloads: true);
|
|
project.uncommentHotReloadPrint();
|
|
try {
|
|
await flutter.hotReload();
|
|
expect(stdout.toString(), allOf(
|
|
contains('(((TICK 1)))'),
|
|
contains('(((((RELOAD WORKED)))))'),
|
|
// Does not invalidate parent widget, so second tick is not output.
|
|
isNot(contains('(((TICK 2)))'),
|
|
)));
|
|
} finally {
|
|
await subscription.cancel();
|
|
}
|
|
});
|
|
|
|
testWithoutContext('changes outside of the class body triggers a full reload', () async {
|
|
final StringBuffer stdout = StringBuffer();
|
|
final StreamSubscription<String> subscription = flutter.stdout.listen(stdout.writeln);
|
|
await flutter.run(singleWidgetReloads: true);
|
|
project.modifyFunction();
|
|
try {
|
|
await flutter.hotReload();
|
|
expect(stdout.toString(), allOf(
|
|
contains('(((TICK 1)))'),
|
|
contains('(((TICK 2)))'),
|
|
));
|
|
} finally {
|
|
await subscription.cancel();
|
|
}
|
|
});
|
|
}
|