diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart index a7279c5916..8b092a1fdc 100644 --- a/packages/flutter_tools/lib/src/commands/test.dart +++ b/packages/flutter_tools/lib/src/commands/test.dart @@ -74,6 +74,7 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts { usesWebRendererOption(); usesDeviceUserOption(); usesFlavorOption(); + addEnableImpellerFlag(verboseHelp: verboseHelp); argParser ..addMultiOption('name', @@ -436,6 +437,7 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts { enableDds: enableDds, nullAssertions: boolArg(FlutterOptions.kNullAssertions), usingCISystem: usingCISystem, + enableImpeller: ImpellerStatus.fromBool(argResults!['enable-impeller'] as bool?), ); Device? integrationTestDevice; diff --git a/packages/flutter_tools/lib/src/test/flutter_tester_device.dart b/packages/flutter_tools/lib/src/test/flutter_tester_device.dart index 33d366998d..b4a2eecb98 100644 --- a/packages/flutter_tools/lib/src/test/flutter_tester_device.dart +++ b/packages/flutter_tools/lib/src/test/flutter_tester_device.dart @@ -109,8 +109,13 @@ class FlutterTesterTestDevice extends TestDevice { if (icudtlPath != null) '--icu-data-file-path=$icudtlPath', '--enable-checked-mode', '--verify-entry-points', - '--enable-software-rendering', - '--skia-deterministic-rendering', + if (debuggingOptions.enableImpeller == ImpellerStatus.enabled) + '--enable-impeller' + else + ...[ + '--enable-software-rendering', + '--skia-deterministic-rendering', + ], if (debuggingOptions.enableDartProfiling) '--enable-dart-profiling', '--non-interactive', diff --git a/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart index c0da0c933a..aa295d6210 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/test_test.dart @@ -996,6 +996,23 @@ dev_dependencies: FileSystem: () => fs, ProcessManager: () => FakeProcessManager.any(), }); + + testUsingContext('Enables Impeller', () async { + final FakeFlutterTestRunner testRunner = FakeFlutterTestRunner(0); + + final TestCommand testCommand = TestCommand(testRunner: testRunner); + final CommandRunner commandRunner = createTestCommandRunner(testCommand); + + await commandRunner.run(const [ + 'test', + '--no-pub', + '--enable-impeller', + ]); + expect(testRunner.lastDebuggingOptionsValue.enableImpeller, ImpellerStatus.enabled); + }, overrides: { + FileSystem: () => fs, + ProcessManager: () => FakeProcessManager.any(), + }); }); }