Code Monkey home page Code Monkey logo

coverage's Introduction

Coverage provides coverage data collection, manipulation, and formatting for Dart.

Build Status Coverage Status Pub

Tools

collect_coverage collects coverage JSON from the Dart VM Service. format_coverage formats JSON coverage data into either LCOV or pretty-printed format.

Install coverage

dart pub global activate coverage

Consider adding the dart pub global run executables directory to your path. See Running a script from your PATH for more details.

Running tests with coverage

For the common use case where you just want to run all your tests, and generate an lcov.info file, you can use the test_with_coverage script:

dart pub global run coverage:test_with_coverage

By default, this script assumes it's being run from the root directory of a package, and outputs a coverage.json and lcov.info file to ./coverage/

This script is essentially the same as running:

dart run --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=8181 test &
dart pub global run coverage:collect_coverage --wait-paused --uri=http://127.0.0.1:8181/ -o coverage/coverage.json --resume-isolates --scope-output=foo
dart pub global run coverage:format_coverage --packages=.dart_tool/package_config.json --lcov -i coverage/coverage.json -o coverage/lcov.info

For more complicated use cases, where you want to control each of these stages, see the sections below.

Collecting coverage from the VM

dart --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=NNNN script.dart
dart pub global run coverage:collect_coverage --uri=http://... -o coverage.json --resume-isolates

or if the dart pub global run executables are on your PATH,

collect_coverage --uri=http://... -o coverage.json --resume-isolates

where --uri specifies the Dart VM Service URI emitted by the VM.

If collect_coverage is invoked before the script from which coverage is to be collected, it will wait until it detects a VM observatory to which it can connect. An optional --connect-timeout may be specified (in seconds). The --wait-paused flag may be enabled, causing collect_coverage to wait until all isolates are paused before collecting coverage.

Formatting coverage data

dart pub global run coverage:format_coverage --package=app_package -i coverage.json

or if the dart pub global run exectuables are on your PATH,

format_coverage --package=app_package -i coverage.json

where app_package is the path to the package whose coverage is being collected (defaults to the current working directory). If --sdk-root is set, Dart SDK coverage will also be output.

Ignore lines from coverage

  • // coverage:ignore-line to ignore one line.
  • // coverage:ignore-start and // coverage:ignore-end to ignore range of lines inclusive.
  • // coverage:ignore-file to ignore the whole file.

Function and branch coverage

To gather function level coverage information, pass --function-coverage to collect_coverage:

dart --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=NNNN script.dart
dart pub global run coverage:collect_coverage --uri=http://... -o coverage.json --resume-isolates --function-coverage

To gather branch level coverage information, pass --branch-coverage to both collect_coverage and the Dart command you're gathering coverage from:

dart --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=NNNN --branch-coverage script.dart
dart pub global run coverage:collect_coverage --uri=http://... -o coverage.json --resume-isolates --branch-coverage

Branch coverage requires Dart VM 2.17.0, with service API v3.56. Function, branch, and line coverage can all be gathered at the same time, by combining those flags:

dart --pause-isolates-on-exit --disable-service-auth-codes --enable-vm-service=NNNN --branch-coverage script.dart
dart pub global run coverage:collect_coverage --uri=http://... -o coverage.json --resume-isolates --function-coverage --branch-coverage

These flags can also be passed to test_with_coverage:

pub global run coverage:test_with_coverage --branch-coverage --function-coverage

coverage's People

Contributors

cbracken avatar kevmoo avatar liamappelbe avatar bkonyi avatar grouma avatar dependabot[bot] avatar jakemac53 avatar devoncarew avatar pq avatar aam avatar natebosch avatar adam-singer avatar michaelrfairhurst avatar zoechigist avatar ekweible avatar jcollins-g avatar jacob314 avatar derekxu16 avatar cedx avatar willdrach-wk avatar jensjoha avatar jellynoone avatar dramos07 avatar stargator avatar srawlins avatar pasindud avatar lukaslihotzki avatar kturney avatar jonahwilliams avatar luckey-elijah avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.