@@ -13,6 +13,7 @@ import 'package:engine_tool/src/commands/command_runner.dart';
1313import 'package:engine_tool/src/environment.dart' ;
1414import 'package:engine_tool/src/logger.dart' ;
1515import 'package:litetest/litetest.dart' ;
16+ import 'package:path/path.dart' as path;
1617import 'package:platform/platform.dart' ;
1718import 'package:process_fakes/process_fakes.dart' ;
1819import 'package:process_runner/process_runner.dart' ;
@@ -54,23 +55,28 @@ void main() {
5455 'win_test_config' : winTestConfig,
5556 };
5657
57- (Environment , List <List <String >>) linuxEnv (Logger logger) {
58+ (Environment , List <List <String >>) linuxEnv (Logger logger, {Engine ? eng}) {
59+ eng ?? = engine;
5860 final List <List <String >> runHistory = < List <String >> [];
5961 return (
6062 Environment (
6163 abi: ffi.Abi .linuxX64,
62- engine: engine ,
64+ engine: eng ,
6365 platform: FakePlatform (
6466 operatingSystem: Platform .linux,
6567 resolvedExecutable: io.Platform .resolvedExecutable),
6668 processRunner: ProcessRunner (
67- processManager: FakeProcessManager (onStart: (List <String > command) {
68- runHistory.add (command);
69- return FakeProcess ();
70- }, onRun: (List <String > command) {
71- runHistory.add (command);
72- return io.ProcessResult (81 , 0 , '' , '' );
73- }),
69+ processManager: FakeProcessManager (
70+ canRun: (Object ? exe, {String ? workingDirectory}) => true ,
71+ onStart: (List <String > command) {
72+ runHistory.add (command);
73+ return FakeProcess ();
74+ },
75+ onRun: (List <String > command) {
76+ runHistory.add (command);
77+ return io.ProcessResult (81 , 0 , '' , '' );
78+ },
79+ ),
7480 ),
7581 logger: logger,
7682 ),
@@ -82,7 +88,7 @@ void main() {
8288 final Logger logger = Logger .test ();
8389 final (Environment env, _) = linuxEnv (logger);
8490 final List <Build > result = runnableBuilds (env, configs);
85- expect (result.length, equals (6 ));
91+ expect (result.length, equals (8 ));
8692 expect (result[0 ].name, equals ('build_name' ));
8793 });
8894
@@ -157,4 +163,69 @@ void main() {
157163 expect (result, equals (0 ));
158164 expect (runHistory.length, lessThanOrEqualTo (3 ));
159165 });
166+
167+ test ('build command runs rbe on an rbe build' , () async {
168+ final Logger logger = Logger .test ();
169+ final (Environment env, List <List <String >> runHistory) = linuxEnv (logger);
170+ final ToolCommandRunner runner = ToolCommandRunner (
171+ environment: env,
172+ configs: configs,
173+ );
174+ final int result = await runner.run (< String > [
175+ 'build' ,
176+ '--config' ,
177+ 'android_debug_rbe_arm64' ,
178+ ]);
179+ expect (result, equals (0 ));
180+ expect (runHistory[0 ][0 ], contains (path.join ('tools' , 'gn' )));
181+ expect (runHistory[0 ][4 ], equals ('--rbe' ));
182+ expect (runHistory[1 ][0 ], contains (path.join ('reclient' , 'bootstrap' )));
183+ });
184+
185+ test ('build command does not run rbe when disabled' , () async {
186+ final Logger logger = Logger .test ();
187+ final (Environment env, List <List <String >> runHistory) = linuxEnv (logger);
188+ final ToolCommandRunner runner = ToolCommandRunner (
189+ environment: env,
190+ configs: configs,
191+ );
192+ final int result = await runner.run (< String > [
193+ 'build' ,
194+ '--config' ,
195+ 'android_debug_rbe_arm64' ,
196+ '--no-rbe' ,
197+ ]);
198+ expect (result, equals (0 ));
199+ expect (runHistory[0 ][0 ], contains (path.join ('tools' , 'gn' )));
200+ expect (runHistory[0 ], doesNotContainAny (< String > ['--rbe' ]));
201+ expect (runHistory[1 ][0 ], contains (path.join ('ninja' , 'ninja' )));
202+ });
203+
204+ test ('build command does not run rbe when rbe configs do not exist' , () async {
205+ final Logger logger = Logger .test ();
206+ final io.Directory rootDir = io.Directory .systemTemp.createTempSync ('et' );
207+ try {
208+ final Engine eng = TestEngine .createTemp (rootDir: rootDir);
209+ final (Environment env, List <List <String >> runHistory) = linuxEnv (logger, eng: eng);
210+ final ToolCommandRunner runner = ToolCommandRunner (
211+ environment: env,
212+ configs: configs,
213+ );
214+ final int result = await runner.run (< String > [
215+ 'build' ,
216+ '--config' ,
217+ 'android_debug_rbe_arm64' ,
218+ ]);
219+ expect (result, equals (0 ));
220+ expect (runHistory[0 ][0 ], contains (path.join ('tools' , 'gn' )));
221+ expect (runHistory[0 ], doesNotContainAny (< String > ['--rbe' ]));
222+ expect (runHistory[1 ][0 ], contains (path.join ('ninja' , 'ninja' )));
223+ } finally {
224+ try {
225+ rootDir.deleteSync (recursive: true );
226+ } catch (_) {
227+ // Ignore temp directory deletion failure.
228+ }
229+ }
230+ });
160231}
0 commit comments