From e13b8c43386a46a366c9fd5cd16dea59c64c89aa Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Thu, 8 Jun 2023 10:38:03 -0400 Subject: [PATCH] [tool] Only run unit tests in Chrome for inline web (#4153) Currently we are running Dart unit tests in Chrome for any plugin with web support, but it should only be necessary for plugins that have an inline web implementation, not for app-facing packages that endorse a web implementation. --- .../video_player/test/video_player_test.dart | 4 ++-- .../windows_unit_tests_exceptions.yaml | 8 ------- script/tool/lib/src/test_command.dart | 4 +++- script/tool/test/test_command_test.dart | 23 ++++++++++++++++++- 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/packages/video_player/video_player/test/video_player_test.dart b/packages/video_player/video_player/test/video_player_test.dart index ef4f0bfa21..bef0298c80 100644 --- a/packages/video_player/video_player/test/video_player_test.dart +++ b/packages/video_player/video_player/test/video_player_test.dart @@ -350,12 +350,12 @@ void main() { test('file with special characters', () async { final VideoPlayerController controller = - VideoPlayerController.file(File('A #1 Hit?.avi')); + VideoPlayerController.file(File('A #1 Hit.avi')); await controller.initialize(); final String uri = fakeVideoPlayerPlatform.dataSources[0].uri!; expect(uri.startsWith('file:///'), true, reason: 'Actual string: $uri'); - expect(uri.endsWith('/A%20%231%20Hit%3F.avi'), true, + expect(uri.endsWith('/A%20%231%20Hit.avi'), true, reason: 'Actual string: $uri'); }, skip: kIsWeb /* Web does not support file assets. */); diff --git a/script/configs/windows_unit_tests_exceptions.yaml b/script/configs/windows_unit_tests_exceptions.yaml index b837d56771..76396080fb 100644 --- a/script/configs/windows_unit_tests_exceptions.yaml +++ b/script/configs/windows_unit_tests_exceptions.yaml @@ -11,20 +11,12 @@ # Unit tests for plugins that support web currently run in # Chrome, which isn't currently supported by web infrastructure. # TODO(ditman): Fix this in the repo tooling. -- camera - camera_web -- file_selector - file_selector_web -- google_maps_flutter - google_maps_flutter_web -- google_sign_in - google_sign_in_web -- image_picker - image_picker_for_web -- shared_preferences - shared_preferences_web -- url_launcher - url_launcher_web -- video_player - video_player_web - webview_flutter_web diff --git a/script/tool/lib/src/test_command.dart b/script/tool/lib/src/test_command.dart index 5101b8f19e..5c793f63ed 100644 --- a/script/tool/lib/src/test_command.dart +++ b/script/tool/lib/src/test_command.dart @@ -66,7 +66,9 @@ class TestCommand extends PackageLoopingCommand { '--color', if (experiment.isNotEmpty) '--enable-experiment=$experiment', // TODO(ditman): Remove this once all plugins are migrated to 'drive'. - if (pluginSupportsPlatform(platformWeb, package)) '--platform=chrome', + if (pluginSupportsPlatform(platformWeb, package, + requiredMode: PlatformSupport.inline)) + '--platform=chrome', ], workingDir: package.directory, ); diff --git a/script/tool/test/test_command_test.dart b/script/tool/test/test_command_test.dart index 5d34e390fd..c4c655bf71 100644 --- a/script/tool/test/test_command_test.dart +++ b/script/tool/test/test_command_test.dart @@ -15,7 +15,7 @@ import 'mocks.dart'; import 'util.dart'; void main() { - group('$TestCommand', () { + group('TestCommand', () { late FileSystem fileSystem; late Platform mockPlatform; late Directory packagesDir; @@ -239,6 +239,27 @@ void main() { ); }); + test('Does not run on Chrome for web endorsements', () async { + final RepositoryPackage plugin = createFakePlugin( + 'plugin', + packagesDir, + extraFiles: ['test/empty_test.dart'], + platformSupport: { + platformWeb: const PlatformDetails(PlatformSupport.federated), + }, + ); + + await runCapturingPrint(runner, ['test']); + + expect( + processRunner.recordedCalls, + orderedEquals([ + ProcessCall(getFlutterCommand(mockPlatform), + const ['test', '--color'], plugin.path), + ]), + ); + }); + test('enable-experiment flag', () async { final RepositoryPackage plugin = createFakePlugin('a', packagesDir, extraFiles: ['test/empty_test.dart']);