| // Copyright (c) 2024, 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. | |
| import 'dart:io'; | |
| import '../tool/entry_points.dart' show compilePlatformEntryPoint; | |
| import 'coverage_helper.dart'; | |
| Future<void> main(List<String> arguments) async { | |
| Uri? coverageUri; | |
| for (String argument in arguments) { | |
| if (argument.startsWith("--coverage=")) { | |
| coverageUri = Uri.base.resolveUri( | |
| Uri.file(argument.substring("--coverage=".length)), | |
| ); | |
| } else { | |
| throw "Unsupported argument: $argument"; | |
| } | |
| } | |
| if (coverageUri == null) { | |
| throw "Need --coverage=<dir>/ argument"; | |
| } | |
| Directory tmp = Directory.systemTemp.createTempSync( | |
| "compile_platform_coverage", | |
| ); | |
| String outlinePath = tmp.uri.resolve("vm_outline.dill").toFilePath(); | |
| String platformPath = tmp.uri.resolve("vm_platform.dill").toFilePath(); | |
| await compilePlatformEntryPoint([ | |
| "dart:core", | |
| "-Ddart.vm.product=false", | |
| "-Ddart.isVM=true", | |
| "--single-root-scheme=org-dartlang-sdk", | |
| "--single-root-base=.", | |
| "org-dartlang-sdk:///sdk/lib/libraries.json", | |
| outlinePath, | |
| platformPath, | |
| outlinePath, | |
| ]); | |
| tmp.deleteSync(recursive: true); | |
| const String displayName = "compile platform"; | |
| File f = new File.fromUri(coverageUri.resolve("$displayName.coverage")); | |
| // Force compiling seems to add something like 1 second to the collection | |
| // time, but we get rid of uncompiled functions so it seems to be worth it. | |
| (await collectCoverage( | |
| displayName: displayName, | |
| forceCompile: true, | |
| ))?.writeToFile(f); | |
| } |