Fix the warning test by checking stderr (#30997)
Previously, I used the Android emulator for testing and everything
seemed to work fine with stdout (if I remember correctly). But our
devicelab uses real Android devices and the warnings are routed to
stderr. Hence change stdout to stderr in the test.
diff --git a/dev/devicelab/bin/tasks/drive_perf_debug_warning.dart b/dev/devicelab/bin/tasks/drive_perf_debug_warning.dart
index e2f06e0..78bf7be 100644
--- a/dev/devicelab/bin/tasks/drive_perf_debug_warning.dart
+++ b/dev/devicelab/bin/tasks/drive_perf_debug_warning.dart
@@ -8,14 +8,16 @@
import 'package:flutter_devicelab/framework/framework.dart';
import 'package:flutter_devicelab/framework/utils.dart';
-Future<String> _runWithMode(String mode, String deviceId) {
- return evalFlutter('drive', options: <String>[
+Future<String> _runWithMode(String mode, String deviceId) async {
+ final StringBuffer stderr = StringBuffer();
+ await evalFlutter('drive', stderr: stderr, options: <String>[
mode,
'-t',
'test_driver/scroll_perf.dart',
'-d',
deviceId,
]);
+ return stderr.toString();
}
Future<TaskResult> run() async {
diff --git a/dev/devicelab/lib/framework/utils.dart b/dev/devicelab/lib/framework/utils.dart
index fc99b47..c562a3f 100644
--- a/dev/devicelab/lib/framework/utils.dart
+++ b/dev/devicelab/lib/framework/utils.dart
@@ -303,6 +303,7 @@
Map<String, String> environment,
bool canFail = false, // as in, whether failures are ok. False means that they are fatal.
String workingDirectory,
+ StringBuffer stderr, // if not null, the stderr will be written here
}) async {
final Process process = await startProcess(executable, arguments, environment: environment, workingDirectory: workingDirectory);
@@ -321,6 +322,7 @@
.transform<String>(const LineSplitter())
.listen((String line) {
print('stderr: $line');
+ stderr?.writeln(line);
}, onDone: () { stderrDone.complete(); });
await Future.wait<void>(<Future<void>>[stdoutDone.future, stderrDone.future]);
@@ -347,10 +349,11 @@
List<String> options = const <String>[],
bool canFail = false, // as in, whether failures are ok. False means that they are fatal.
Map<String, String> environment,
+ StringBuffer stderr, // if not null, the stderr will be written here.
}) {
final List<String> args = <String>[command]..addAll(options);
return eval(path.join(flutterDirectory.path, 'bin', 'flutter'), args,
- canFail: canFail, environment: environment);
+ canFail: canFail, environment: environment, stderr: stderr);
}
String get dartBin =>