// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // TODO(https://github.com/dart-lang/tools/issues/494): Fix and re-enable this. @TestOn('!windows') library; import 'dart:convert'; import 'dart:io'; import 'package:coverage/coverage.dart'; import 'package:test/test.dart'; // The scriptId for the main_test.js in the sample report. const String mainScriptId = '31'; Future sourceMapProvider(String scriptId) async { if (scriptId != mainScriptId) { return 'something invalid!'; } return File('test/test_files/main_test.js.map').readAsString(); } Future sourceProvider(String scriptId) async { if (scriptId != mainScriptId) return null; return File('test/test_files/main_test.js').readAsString(); } Future sourceUriProvider(String sourceUrl, String scriptId) async => Uri.parse(sourceUrl); void main() { test('reports correctly', () async { final preciseCoverage = json.decode( await File('test/test_files/chrome_precise_report.txt') .readAsString()) as List; final report = await parseChromeCoverage( preciseCoverage.cast(), sourceProvider, sourceMapProvider, sourceUriProvider, ); final sourceReport = (report['coverage'] as List>).firstWhere( (Map report) => report['source'].toString().contains('main_test.dart'), ); final expectedHits = { 7: 1, 11: 1, 13: 1, 14: 1, 17: 0, 19: 0, 20: 0, 22: 1, 23: 1, 24: 1, 25: 1, 28: 1, 30: 0, 32: 1, 34: 1, 35: 1, 36: 1, }; final hitMap = sourceReport['hits'] as List; expect(hitMap.length, equals(expectedHits.keys.length * 2)); for (var i = 0; i < hitMap.length; i += 2) { expect(expectedHits[hitMap[i]], equals(hitMap[i + 1])); } }); }