diff --git a/dev/devicelab/lib/framework/metrics_center.dart b/dev/devicelab/lib/framework/metrics_center.dart index b96cbe2db33..83bbf5d922d 100644 --- a/dev/devicelab/lib/framework/metrics_center.dart +++ b/dev/devicelab/lib/framework/metrics_center.dart @@ -45,11 +45,13 @@ Future connectFlutterDestination() async { /// ] /// } List parse(Map resultsJson) { - final List scoreKeys = (resultsJson['BenchmarkScoreKeys'] as List).cast(); - final Map resultData = resultsJson['ResultData'] as Map; + final List scoreKeys = + (resultsJson['BenchmarkScoreKeys'] as List?)?.cast() ?? const []; + final Map resultData = + resultsJson['ResultData'] as Map? ?? const {}; final String gitBranch = (resultsJson['CommitBranch'] as String).trim(); final String gitSha = (resultsJson['CommitSha'] as String).trim(); - final String builderName = resultsJson['BuilderName'] as String; + final String builderName = (resultsJson['BuilderName'] as String).trim(); final List metricPoints = []; for (final String scoreKey in scoreKeys) { metricPoints.add( diff --git a/dev/devicelab/test/metrics_center_test.dart b/dev/devicelab/test/metrics_center_test.dart index 470a350b542..920cb4c39a0 100644 --- a/dev/devicelab/test/metrics_center_test.dart +++ b/dev/devicelab/test/metrics_center_test.dart @@ -16,17 +16,30 @@ void main() { 'BuilderName': 'test', 'ResultData': { 'average_frame_build_time_millis': 0.4550425531914895, - '90th_percentile_frame_build_time_millis': 0.473 + '90th_percentile_frame_build_time_millis': 0.473, }, 'BenchmarkScoreKeys': [ 'average_frame_build_time_millis', - '90th_percentile_frame_build_time_millis' - ] + '90th_percentile_frame_build_time_millis', + ], }; final List metricPoints = parse(results); expect(metricPoints[0].value, equals(0.4550425531914895)); expect(metricPoints[1].value, equals(0.473)); }); + + test('succeeds - null ResultData', () { + final Map results = { + 'CommitBranch': 'master', + 'CommitSha': 'abc', + 'BuilderName': 'test', + 'ResultData': null, + 'BenchmarkScoreKeys': null, + }; + final List metricPoints = parse(results); + + expect(metricPoints.length, 0); + }); }); }