test: DRY up parsing and validating coverage JSON
diff --git a/test/collect_coverage_api_test.dart b/test/collect_coverage_api_test.dart index 9fa1c0a..9046d29 100644 --- a/test/collect_coverage_api_test.dart +++ b/test/collect_coverage_api_test.dart
@@ -18,11 +18,7 @@ void main() { test('collect_coverage_api', () async { - final json = await _collectCoverage(); - expect(json.keys, unorderedEquals(<String>['type', 'coverage'])); - expect(json, containsPair('type', 'CodeCoverage')); - - final coverage = json['coverage'] as List; + final coverage = coverageDataFromJson(await _collectCoverage()); expect(coverage, isNotEmpty); final sources = coverage.sources(); @@ -37,12 +33,9 @@ }); test('collect_coverage_api with scoped output', () async { - final json = - await _collectCoverage(scopedOutput: <String>{}..add('coverage')); - expect(json.keys, unorderedEquals(<String>['type', 'coverage'])); - expect(json, containsPair('type', 'CodeCoverage')); - - final coverage = json['coverage'] as List; + final coverage = coverageDataFromJson( + await _collectCoverage(scopedOutput: <String>{}..add('coverage')), + ); expect(coverage, isNotEmpty); final sources = coverage.sources(); @@ -54,20 +47,14 @@ }); test('collect_coverage_api with isolateIds', () async { - final json = await _collectCoverage(isolateIds: true); - expect(json.keys, unorderedEquals(<String>['type', 'coverage'])); - expect(json, containsPair('type', 'CodeCoverage')); - - final coverage = json['coverage'] as List<Map<String, dynamic>>; + final coverage = + coverageDataFromJson(await _collectCoverage(isolateIds: true)); expect(coverage, isEmpty); }); test('collect_coverage_api with function coverage', () async { - final json = await _collectCoverage(functionCoverage: true); - expect(json.keys, unorderedEquals(<String>['type', 'coverage'])); - expect(json, containsPair('type', 'CodeCoverage')); - - final coverage = json['coverage'] as List; + final coverage = + coverageDataFromJson(await _collectCoverage(functionCoverage: true)); expect(coverage, isNotEmpty); final sources = coverage.sources(); @@ -84,11 +71,8 @@ }); test('collect_coverage_api with branch coverage', () async { - final json = await _collectCoverage(branchCoverage: true); - expect(json.keys, unorderedEquals(<String>['type', 'coverage'])); - expect(json, containsPair('type', 'CodeCoverage')); - - final coverage = json['coverage'] as List; + final coverage = + coverageDataFromJson(await _collectCoverage(branchCoverage: true)); expect(coverage, isNotEmpty); final sources = coverage.sources();
diff --git a/test/collect_coverage_test.dart b/test/collect_coverage_test.dart index cc3c84f..3840768 100644 --- a/test/collect_coverage_test.dart +++ b/test/collect_coverage_test.dart
@@ -26,12 +26,9 @@ final resultString = await _getCoverageResult(); // analyze the output json - final jsonResult = json.decode(resultString) as Map<String, dynamic>; + final coverage = + coverageDataFromJson(json.decode(resultString) as Map<String, dynamic>); - expect(jsonResult.keys, unorderedEquals(<String>['type', 'coverage'])); - expect(jsonResult, containsPair('type', 'CodeCoverage')); - - final coverage = jsonResult['coverage'] as List; expect(coverage, isNotEmpty); final sources = coverage.sources();
diff --git a/test/run_and_collect_test.dart b/test/run_and_collect_test.dart index 4e2cb49..8a5a63e 100644 --- a/test/run_and_collect_test.dart +++ b/test/run_and_collect_test.dart
@@ -16,11 +16,7 @@ void main() { test('runAndCollect', () async { // use runAndCollect and verify that the results match w/ running manually - final json = await runAndCollect(testAppPath); - expect(json.keys, unorderedEquals(<String>['type', 'coverage'])); - expect(json, containsPair('type', 'CodeCoverage')); - - final coverage = json['coverage'] as List<Map<String, dynamic>>; + final coverage = coverageDataFromJson(await runAndCollect(testAppPath)); expect(coverage, isNotEmpty); final sources = coverage.sources();
diff --git a/test/test_util.dart b/test/test_util.dart index 9274f63..2e5dd90 100644 --- a/test/test_util.dart +++ b/test/test_util.dart
@@ -6,6 +6,7 @@ import 'dart:io'; import 'package:path/path.dart' as p; +import 'package:test/test.dart'; import 'package:test_process/test_process.dart'; final String testAppPath = p.join('test', 'test_files', 'test_app.dart'); @@ -23,6 +24,13 @@ ], ); +List<Map<String, dynamic>> coverageDataFromJson(Map<String, dynamic> json) { + expect(json.keys, unorderedEquals(<String>['type', 'coverage'])); + expect(json, containsPair('type', 'CodeCoverage')); + + return (json['coverage'] as List).cast<Map<String, dynamic>>(); +} + final _versionPattern = RegExp('([0-9]+)\\.([0-9]+)\\.([0-9]+)'); bool platformVersionCheck(int minMajor, int minMinor) { final match = _versionPattern.matchAsPrefix(Platform.version);