- Remove outdated VM service version checks.
- Require Dart ^3.4
- Fix bug where some ranges were able to bypass the
--scope-output
filters. - Add --ignore-files option allowing to exclude files from coverage reports using glob patterns
- Copy collect_coverage's
--scope-output
flag to test_with_coverage.
- Update
package:vm_service
constraints to '>=12.0.0 <15.0.0'.
- Update
package:vm_service
constraints to '>=12.0.0 <14.0.0'.
- Require Dart 3.0.0
- Update
package:vm_service
constraints to '^12.0.0'. - Add
coverableLineCache
parameter tocollect
. This allows the set of coverable lines to be cached between calls tocollect
, avoiding the need to force compile the same libraries repeatedly. This is only useful when running multiple coverage collections over the same libraries.
- allow omitting space between
//
andcoverage
in coverage ignore comments - allow text after coverage ignore comments
- throw FormatException when encountering unbalanced ignore comments instead of silently erroring
- Update
package:vm_service
constraints to '>= 9.4.0 <12.0.0'.
- Require Dart 2.18
- Update
package:vm_service
constraints to '>=9.4.0 <12.0.0'.
- Update
package:vm_service
constraints to '>=9.4.0 <11.0.0'.
- Handle SentinelExceptions thrown by vm_service.
- Update to vm_service 9.4.0.
- Use IsolateRef.isolateGroupId to speed up coverage collection.
- Ignore uncoverable abstract methods.
- Fix bug where 'ingore-line' comments etc are applied even if they're inside string literals.
- Change the LICENSE file to the standard Dart BSD license.
-
Support passing extra arguments to
test_with_coverage
which are then passed topackage:test
.Example:
dart run coverage:test_with_coverage -- --preset CI
- Added
HitMap.parseJsonSync
which takes a cache of ignored lines which can speedup calls whencheckIgnoredLines
is true and the function is called several times with overlapping files in the input json. - Bump the version of vm_service to 9.0.0.
- Fix test_with_coverage listening to an unsupported signal on windows.
- Fix
--reportOn
on windows using incorrect path separators.
- Fix running
dart pub global run coverage:test_with_coverage
ordart run coverage:test_with_coverage
- Bump the minimum Dart SDK version to 2.15.0
- Add a
--package
flag, which takes the package's root directory, instead of the .package file. Deprecate the--packages
flag. - Deprecate the packagesPath parameter and add packagePath instead, in
HitMap.parseJson
,HitMap.parseFiles
,createHitmap
, andparseCoverage
. - Add a new executable to the package,
test_with_coverage
. This simplifies the most common use case of coverage, running all the tests for a package, and generating an lcov.info file. - Use the
libraryFilters
option ingetSourceReport
to speed up coverage runs that usescopedOutput
.
- Support branch level coverage information, when running tests in the Dart VM. This is not supported for web tests yet.
- Add flag
--branch-coverage
(abbr-b
) to collect_coverage that collects branch coverage information. The VM must also be run with the--branch-coverage
flag. - Add flag
--pretty-print-branch
to format_coverage that works similarly to pretty print, but outputs branch level coverage, rather than line level. - Update
--lcov
(abbr-l
) in format_coverage to output branch level coverage, in addition to line level. - Add an optional bool flag to
collect
that controls whether branch coverage is collected. - Add a
branchHits
field toHitMap
. - Add support for scraping the service URI from the new Dart VM service message.
- Correctly parse package_config files on Windows when the root URI is relative.
- Support function level coverage information, when running tests in the Dart VM. This is not supported for web tests yet.
- Add flag
--function-coverage
(abbr-f
) to collect_coverage that collects function coverage information. - Add flag
--pretty-print-func
(abbr-f
) to format_coverage that works similarly to pretty print, but outputs function level coverage, rather than line level. - Update
--lcov
(abbr-l
) in format_coverage to output function level coverage, in addition to line level. - Add an optional bool flag to
collect
that controls whether function coverage is collected. - Added
HitMap.parseJson
,FileHitMaps.merge
,HitMap.parseFiles
,HitMap.toJson
,FileHitMapsFormatter.formatLcov
, andFileHitMapsFormatter.prettyPrint
that switch from usingMap<int, int>
to represent line coverage to usingHitMap
(which contains both line and function coverage). Document the old versions of these functions as deprecated. We will delete the old functions when we update to coverage version 2.0.0. - Ensure
createHitmap
returns a sorted hitmap. This fixes a potential issue with ignore line annotations. - Use the
reportLines
flag invm_service
'sgetSourceReport
RPC. This typically halves the number of RPCs that the coverage collector needs to run. - Require Dart
>=2.14.0
- Updated dependency on
vm_service
package from>=6.1.0 <8.0.0
to>=8.1.0 <9.0.0
.
- Updated dependency on
vm_service
package from^6.1.0
to>=6.1.0 <8.0.0
.
- Fix an issue where the
--packages
argument wasn't passed toformat_coverage
.
- Allow the chrome
sourceUriProvider
to returnnull
.
- Migrate to null safety.
- Removed support for SDK
1.x.x
.
- Update
args
,logging
, andpackage_config
deps to allow the latest stable releases.
- Updated dependency on
vm_service
package from>=1.0.0 < 5.0.0
to>=1.0.0 <7.0.0
.
- BREAKING CHANGE: Eliminate the
--package-root
option frombin/run_and_collect.dart
andbin/format_coverage.dart
as well as fromrunAndCollect
and theResolver
constructor.
- Fix an issue where
--wait-paused
withcollect
would attempt to collect coverage if no isolates have started.
- Updated dependency on
vm_service
package from>=1.0.0 < 5.0.0
to>=1.0.0 <6.0.0
.
-
Add flag
--check-ignore
that is used to ignore lines from coverage depending on the comments.Use // coverage:ignore-line to ignore one line. Use // coverage:ignore-start and // coverage:ignore-end to ignore range of lines inclusive. Use // coverage:ignore-file to ignore the whole file.
- Revert breaking change in 13.10
-
Add flag
--check-ignore
that is used to ignore lines from coverage depending on the comments.Use // coverage:ignore-line to ignore one line. Use // coverage:ignore-start and // coverage:ignore-end to ignore range of lines inclusive. Use // coverage:ignore-file to ignore the whole file.
- Don't crash on empty JSON input files.
- Loosen the dependency on the
vm_service
package from>=1.0.0 <4.0.0
to>=1.0.0 <5.0.0
.
- Update to package_config
1.9.0
which supports package_config.json files and should be forwards compatible with2.0.0
. - Deprecate the
packageRoot
argument onResolver
.
- Loosen the dependency on the
vm_service
package from>=1.0.0 <3.0.0
to>=1.0.0 <4.0.0
.
- Now consider all
.json
files for theformat_coverage
command.
- Update
parseChromeCoverage
to merge coverage information for a given line. - Handle source map parse errors in
parseChromeCoverage
. Coverage will not be considered for Dart files that have corresponding invalid source maps.
- Add
parseChromeCoverage
for creating a Dart based coverage report from a Chrome coverage report.
- Re-loosen the dependency on the
vm_service
package from>=1.0.0 < 2.1.2
to>=1.0.0 <3.0.0
now that breakage introduced in version2.1.2
has been resolved. Fixed in: https://github.com/dart-lang/sdk/commit/7a911ce3f1e945f2cbd1967c6109127e3acbab5a.
- Tighten the dependency on the
vm_service
package from>=1.0.0 <3.0.0
down to>=1.0.0 <2.1.2
in order to exclude version2.1.2
which is broken on the current stable Dart VM due to a missing SDK constraint in its pubspec.yaml. The breakage was introduced in: https://github.com/dart-lang/sdk/commit/9e636b5ab4de850fb19bc262e0686fdf14bfbfc0.
- Loosen the dependency on the
vm_service
package from^1.0.0
to>=1.0.0 <3.0.0
. Ensures dependency version range compatibility with the latest versions of packagetest
.
- Adds a new named argument to
collect
to filter coverage results by a set of VM isolate IDs. - Migrates implementation of VM service protocol library from
package:vm_service_lib
, which is no longer maintained, topackage:vm_service
, which is.
- Add new multi-flag option
--scope-output
which restricts coverage output so that only scripts that start with the provided path are considered.
- Handle scenario where the VM returns empty coverage information for a range.
- BREAKING CHANGE: Skips collecting coverage for
dart:
libraries by default, which provides a significant performance boost. To restore the previous behaviour and collect coverage for these libraries, use the--include-dart
flag. - Disables WebSocket compression for coverage collection. Since almost all coverage collection runs happen over the loopback interface to localhost, this improves performance and reduces CPU usage.
- Migrates implementation of VM service protocol library from
package:vm_service_client
, which is no longer maintained, topackage:vm_service_lib
, which is.
collect()
now immediately throwsArgumentError
if a null URI is passed in theserviceUri
parameter to avoid a less-easily debuggable null dereference later. See #240 for details.
- Fixed dart-lang/coverage#194. During collection, we now track each script by its (unique) VMScriptRef. This ensures we look up the correct script when computing the affected line for each hit token. The hitmap remains URI based, since in the end, we want a single, unified set of line to hitCount mappings per script.
- Dart SDK upper bound raised to <3.0.0.
- Minor type, dartfmt fixes.
- Require package:args >= 1.4.0.
- BREAKING CHANGE: This version requires Dart SDK 2.0.0-dev.64.1 or later.
- Strong mode fixes as of Dart SDK 2.0.0-dev.64.1.
- BREAKING CHANGE: This version requires Dart SDK 2.0.0-dev.30 or later.
- Updated to Dart 2.0 constants from dart:convert.
- BREAKING CHANGE:
createHitmap
andmergeHitmaps
now specify generic types (Map<String, Map<int, int>>
) on their hit map parameter/return value. - Updated package:args dependency to 1.0.0.
- Strong mode fixes as of Dart SDK 1.24.0.
- Restrict the SDK lower version constraint to
>=1.21.0
. Required for method generics. - Eliminate dependency on package:async.
- Strong mode fixes as of Dart SDK 1.22.0.
- Temporarily add back support for the
--host
and--port
options tocollect_coverage
. This is a temporary measure for backwards-compatibility that may stop working on Dart SDKs >= 1.22. See the related breaking change note for the Dart VM service protocol.
- BREAKING CHANGE:
collect
no longer supports thehost
andport
parameters. These are replaced with aserviceUri
parameter. As of Dart SDK 1.22, the Dart VM will emit Observatory URIs that include an authentication token for security reasons. Automated tools will need to scrape stdout for this URI and pass it tocollect_coverage
. - BREAKING CHANGE:
collect_coverage
: the--host
and--port
options have been replaced with a--uri
option. See the above change for details. - BREAKING CHANGE:
runAndCollect
now defaults to running in checked mode. - Added
extractObservatoryUri
: scrapes an input string for an Observatory URI. Potentially useful for automated tooling after Dart SDK 1.22.
- Added optional
checked
parameter torunAndCollect
to run in checked mode.
- Strong mode fixes as of Dart SDK 1.20.1.
- Make strong mode clean.
- Moved
Formatter.format
parametersreportOn
andbasePath
to constructor. EliminatedpathFilter
parameter.
format_coverage
: add--base-directory
option. Source paths in LCOV/pretty-print output are relative to this directory, or absolute if unspecified.
format_coverage
: support--packages
option for package specs.
- Add fallback URI resolution for Bazel http(s) URIs that don't contain a
packages
path component.
- Add Bazel support to
format_coverage
.
- Bugfix in
collect_coverage
: prevent hang if initial VM service connection is slow. - Workaround for VM behaviour in which
evaluate:source
ranges may appear in the returned source report manifesting in a crash incollect_coverage
. These generally correspond to source evaluations in the debugger and add little value to line coverage. format_coverage
: may be slower for large sets of coverage JSON input files. Unlikely to be an issue due to elimination of--coverage-dir
VM flag.
-
Require at least Dart SDK 1.16.0.
-
Bugfix in format_coverage: if
--report-on
is not specified, emit all coverage, rather than none.
- Added support for the latest Dart SDK.
-
Formatter.format
added two optional arguments:reportOn
andpathFilter
. They can be used independently to limit the files which are included in the output. -
Added
runAndCollect
API to library.
-
Added
collect
top-level method. -
Updated support for latest
0.11.0
dev build. -
Replaced
ServiceEvent.eventType
withServiceEvent.kind
.ServiceEvent.eventType
is deprecated and will be removed in0.8
.
-
format_coverage
no longer emits SDK coverage unless --sdk-root is set explicitly. -
Removed support for collecting coverage from old (<1.9.0) Dart SDKs.
-
Removed deprecated
Resolver.pkgRoot
.
- Fixed early collection bug when --wait-paused is set.
-
Optimized formatters and fixed return value of
format
methods. -
Added
Resolver.packageRoot
– deprecatedResolver.pkgRoot
.
-
Support the latest release of
args
package. -
Support the latest release of
logging
package. -
Fixed error when trying to access invalid paths.
-
Require at least Dart SDK v1.9.0.
- Support observatory protocol changes for VM >= 1.11.0.
- Support observatory protocol changes for VM >= 1.10.0.
- Add support for
pub global run
.
- Add support for SDK versions >= 1.9.0. For Dartium/content-shell versions past 1.9.0, coverage collection is no longer done over the remote debugging port, but via the observatory port emitted on stdout. Backward compatibility with SDKs back to 1.5.x is provided.