From 5fd1d36ecc6750302beebf73683d4a6977603abe Mon Sep 17 00:00:00 2001 From: Danny Tuppeny Date: Wed, 13 Oct 2021 10:44:55 +0100 Subject: [PATCH] Limit 10 second future modification-date in integration test to only where required for reloads (#91300) This prevents all of the `flutter run` calls immediately re-running `flutter pub get` when it has already been run by test setup code. --- .../test_data/background_project.dart | 6 +++++- .../test_data/hot_reload_const_project.dart | 6 +++++- .../test_data/hot_reload_project.dart | 6 +++++- .../test_data/hot_reload_with_asset.dart | 6 +++++- .../test_data/single_widget_reload_project.dart | 12 ++++++++++-- .../test_data/stateless_stateful_project.dart | 6 +++++- .../test/integration.shard/test_utils.dart | 16 ++++++++++------ 7 files changed, 45 insertions(+), 13 deletions(-) diff --git a/packages/flutter_tools/test/integration.shard/test_data/background_project.dart b/packages/flutter_tools/test/integration.shard/test_data/background_project.dart index b858b2a3cf2..68b96744607 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/background_project.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/background_project.dart @@ -103,6 +103,10 @@ class RepeatingBackgroundProject extends Project { void updateTestIsolatePhrase(String message) { final String newMainContents = main.replaceFirst('Isolate thread', message); - writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), newMainContents); + writeFile( + fileSystem.path.join(dir.path, 'lib', 'main.dart'), + newMainContents, + writeFutureModifiedDate: true, + ); } } diff --git a/packages/flutter_tools/test/integration.shard/test_data/hot_reload_const_project.dart b/packages/flutter_tools/test/integration.shard/test_data/hot_reload_const_project.dart index a1d5637a704..1c096af91e8 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/hot_reload_const_project.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/hot_reload_const_project.dart @@ -53,6 +53,10 @@ class HotReloadConstProject extends Project { 'final int field = 2;', '// final int field = 2;', ); - writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), newMainContents); + writeFile( + fileSystem.path.join(dir.path, 'lib', 'main.dart'), + newMainContents, + writeFutureModifiedDate: true, + ); } } diff --git a/packages/flutter_tools/test/integration.shard/test_data/hot_reload_project.dart b/packages/flutter_tools/test/integration.shard/test_data/hot_reload_project.dart index 9c3cb56b542..584fd044910 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/hot_reload_project.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/hot_reload_project.dart @@ -95,6 +95,10 @@ class HotReloadProject extends Project { '// printHotReloadWorked();', 'printHotReloadWorked();', ); - writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), newMainContents); + writeFile( + fileSystem.path.join(dir.path, 'lib', 'main.dart'), + newMainContents, + writeFutureModifiedDate: true, + ); } } diff --git a/packages/flutter_tools/test/integration.shard/test_data/hot_reload_with_asset.dart b/packages/flutter_tools/test/integration.shard/test_data/hot_reload_with_asset.dart index 3668b18f97a..a7244b6faaf 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/hot_reload_with_asset.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/hot_reload_with_asset.dart @@ -55,6 +55,10 @@ class MyApp extends StatelessWidget { 'LOADED DATA', 'SECOND DATA', ); - writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), newMainContents); + writeFile( + fileSystem.path.join(dir.path, 'lib', 'main.dart'), + newMainContents, + writeFutureModifiedDate: true, + ); } } diff --git a/packages/flutter_tools/test/integration.shard/test_data/single_widget_reload_project.dart b/packages/flutter_tools/test/integration.shard/test_data/single_widget_reload_project.dart index 732fe50d575..488958a1550 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/single_widget_reload_project.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/single_widget_reload_project.dart @@ -75,7 +75,11 @@ class SingleWidgetReloadProject extends Project { '// printHotReloadWorked();', 'printHotReloadWorked();', ); - writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), newMainContents); + writeFile( + fileSystem.path.join(dir.path, 'lib', 'main.dart'), + newMainContents, + writeFutureModifiedDate: true, + ); } void modifyFunction() { @@ -83,6 +87,10 @@ class SingleWidgetReloadProject extends Project { '(((((RELOAD WORKED)))))', '(((((RELOAD WORKED 2)))))', ); - writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), newMainContents); + writeFile( + fileSystem.path.join(dir.path, 'lib', 'main.dart'), + newMainContents, + writeFutureModifiedDate: true, + ); } } diff --git a/packages/flutter_tools/test/integration.shard/test_data/stateless_stateful_project.dart b/packages/flutter_tools/test/integration.shard/test_data/stateless_stateful_project.dart index 4ac309e035c..20430df3977 100644 --- a/packages/flutter_tools/test/integration.shard/test_data/stateless_stateful_project.dart +++ b/packages/flutter_tools/test/integration.shard/test_data/stateless_stateful_project.dart @@ -74,6 +74,10 @@ class HotReloadProject extends Project { void toggleState() { stateful = !stateful; - writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), getCode(stateful)); + writeFile( + fileSystem.path.join(dir.path, 'lib', 'main.dart'), + getCode(stateful), + writeFutureModifiedDate: true, + ); } } diff --git a/packages/flutter_tools/test/integration.shard/test_utils.dart b/packages/flutter_tools/test/integration.shard/test_utils.dart index eac95a61b05..87b1dc23788 100644 --- a/packages/flutter_tools/test/integration.shard/test_utils.dart +++ b/packages/flutter_tools/test/integration.shard/test_utils.dart @@ -33,18 +33,22 @@ Directory createResolvedTempDirectorySync(String prefix) { return fileSystem.directory(tempDirectory.resolveSymbolicLinksSync()); } -void writeFile(String path, String content) { - fileSystem.file(path) +void writeFile(String path, String content, {bool writeFutureModifiedDate = false}) { + final File file = fileSystem.file(path) ..createSync(recursive: true) - ..writeAsStringSync(content) - ..setLastModifiedSync(DateTime.now().add(const Duration(seconds: 10))); + ..writeAsStringSync(content); + // Some integration tests on Windows to not see this file as being modified + // recently enough for the hot reload to pick this change up unless the + // modified time is written in the future. + if (writeFutureModifiedDate) { + file.setLastModifiedSync(DateTime.now().add(const Duration(seconds: 5))); + } } void writeBytesFile(String path, List content) { fileSystem.file(path) ..createSync(recursive: true) - ..writeAsBytesSync(content) - ..setLastModifiedSync(DateTime.now().add(const Duration(seconds: 10))); + ..writeAsBytesSync(content); } void writePackages(String folder) {