// 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 main(List 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=/ argument"; } Directory tmp = Directory.systemTemp.createTempSync("compile_platform_coverage"); String outlinePath = tmp.uri.resolve("vm_outline_strong.dill").toFilePath(); String platformPath = tmp.uri.resolve("vm_platform_strong.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); }