Skip to content

Commit a6a7b84

Browse files
authored
Remove the need to use runZoned by replacing print statements (flutter#55530)
1 parent a472530 commit a6a7b84

File tree

3 files changed

+55
-56
lines changed

3 files changed

+55
-56
lines changed

tools/engine_tool/lib/src/commands/command.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ abstract base class CommandBase extends Command<int> {
2828

2929
@override
3030
final ArgParser argParser;
31+
32+
@override
33+
void printUsage() {
34+
environment.logger.status(usage);
35+
}
3136
}
3237

3338
/// Adds the -c (--config) option to the parser.

tools/engine_tool/lib/src/commands/command_runner.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,9 @@ final class ToolCommandRunner extends CommandRunner<int> {
103103
return 1;
104104
}
105105
}
106+
107+
@override
108+
void printUsage() {
109+
environment.logger.status(usage);
110+
}
106111
}

tools/engine_tool/test/build_command_test.dart

Lines changed: 45 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'dart:async';
65
import 'dart:convert' as convert;
76

87
import 'package:engine_build_configs/engine_build_configs.dart';
@@ -449,65 +448,55 @@ void main() {
449448
});
450449

451450
test('et help build line length is not too big', () async {
452-
final prints = <String>[];
453-
await runZoned(
454-
() async {
455-
final testEnv = TestEnvironment.withTestEngine(
456-
cannedProcesses: cannedProcesses,
457-
verbose: true,
458-
);
459-
addTearDown(testEnv.cleanup);
460-
461-
final runner = ToolCommandRunner(
462-
environment: testEnv.environment,
463-
configs: configs,
464-
help: true,
465-
);
466-
final result = await runner.run([
467-
'help',
468-
'build',
469-
]);
470-
expect(result, equals(0));
471-
},
472-
zoneSpecification: ZoneSpecification(
473-
print: (Zone self, ZoneDelegate parent, Zone zone, String line) {
474-
prints.addAll(line.split('\n'));
475-
},
476-
),
451+
final testEnv = TestEnvironment.withTestEngine(
452+
cannedProcesses: cannedProcesses,
453+
verbose: true,
454+
);
455+
addTearDown(testEnv.cleanup);
456+
457+
final runner = ToolCommandRunner(
458+
environment: testEnv.environment,
459+
configs: configs,
460+
help: true,
461+
);
462+
final result = await runner.run([
463+
'help',
464+
'build',
465+
]);
466+
expect(result, equals(0));
467+
468+
// Avoid a degenerate case where nothing is logged.
469+
expect(testEnv.testLogs, isNotEmpty, reason: 'No logs were emitted');
470+
471+
expect(
472+
testEnv.testLogs.map((LogRecord r) => r.message.split('\n')),
473+
everyElement(hasLength(lessThanOrEqualTo(100))),
477474
);
478-
for (final line in prints) {
479-
expect(line.length, lessThanOrEqualTo(100));
480-
}
481475
});
482476

483477
test('non-verbose "et help build" does not contain ci builds', () async {
484-
final prints = <String>[];
485-
await runZoned(
486-
() async {
487-
final testEnv = TestEnvironment.withTestEngine(
488-
cannedProcesses: cannedProcesses,
489-
);
490-
addTearDown(testEnv.cleanup);
491-
492-
final runner = ToolCommandRunner(
493-
environment: testEnv.environment,
494-
configs: configs,
495-
help: true,
496-
);
497-
final result = await runner.run([
498-
'help',
499-
'build',
500-
]);
501-
expect(result, equals(0));
502-
},
503-
zoneSpecification: ZoneSpecification(
504-
print: (Zone self, ZoneDelegate parent, Zone zone, String line) {
505-
prints.addAll(line.split('\n'));
506-
},
507-
),
478+
final testEnv = TestEnvironment.withTestEngine(
479+
cannedProcesses: cannedProcesses,
480+
);
481+
addTearDown(testEnv.cleanup);
482+
483+
final runner = ToolCommandRunner(
484+
environment: testEnv.environment,
485+
configs: configs,
486+
help: true,
487+
);
488+
final result = await runner.run([
489+
'help',
490+
'build',
491+
]);
492+
expect(result, equals(0));
493+
494+
// Avoid a degenerate case where nothing is logged.
495+
expect(testEnv.testLogs, isNotEmpty, reason: 'No logs were emitted');
496+
497+
expect(
498+
testEnv.testLogs.map((LogRecord r) => r.message),
499+
isNot(contains('[ci/')),
508500
);
509-
for (final line in prints) {
510-
expect(line.contains('[ci/'), isFalse);
511-
}
512501
});
513502
}

0 commit comments

Comments
 (0)