Skip to content

vsingh18567/cov-change

Repository files navigation

Cov Change

Cov change is a tool to help you find the changes in your code that are not covered by your tests. It uses git diff to find your changes, and coverage to find your test coverage.

Installation

pip install --upgrade pip
pip install cov-change

Usage

Assuming you've already run tests with coverage (e.g. coverage run -m pytest), you will have generated a .coverage file. To then use cov-change:

coverage json # generate a json file from the .coverage file
cov-change

By default, cov-change will compare your current branch to origin/main. The full usage is:

cov-change [diff_branch] [curr_branch] [--coverage-file COVERAGE_FILE]  [-o --output OUTPUT] [-v --verbose] [-f --format {cli,markdown}] [--diff_file DIFF_FILE] [--use-coverage-diff] [-h --help]

Options

  • diff_branch and curr_branch are the branches you want to compare. By default, diff_branch is origin/main and curr_branch is your current commit.
  • --coverage_file COVERAGE_FILE is the path to the coverage file. By default, it is coverage.json.
  • -o --output OUTPUT is the path to the output JSON file. By default, it is coverage_change.json.
  • -v --verbose will print out the missing lines for each file.
  • -f --format {cli,markdown} is the format of the output. By default, it is cli and outputs a formatted table. If markdown is passed in, it will output a markdown table.
  • --diff_file DIFF_FILE is the path to a pre-generated diff file. If this is not passed in, the git diff will be run within the cov-change command itself. It is recommended that you do not pass this argument in.
  • --use_coverage_diff assumes that cov-change has already been run once, and that the coverage change file has been generated. It will then use that diff file to generate the output.

Examples

cov-change # compare origin/main to current commit
cov-change origin/dev HEAD # compare origin/dev to the current commit
cov-change origin/dev HEAD --coverage_file my_coverage.json -v # compare origin/dev to the current commit, using my_coverage.json as the coverage file and printing out the missing lines

cov-change-check

cov-change-check checks if the generated coverage_change.json file meets requirements. If it doesn't, it will exit with a non-zero exit code. This is useful for CI/CD pipelines. The full usage is:

cov-change-check [coverage_change_file] [--total TOTAL] [--file FILE] [-h --help]

Options

  • coverage_change_file is the path to the coverage change file. By default, it is coverage_change.json.
  • --total TOTAL is the minimum total coverage change required. By default, it is 0.
  • --file FILE is the minimum coverage change required in each file. By default, it is 0.

Examples

cov-change-check --total 80 --file 50 # check if the total coverage is at least 80%, and if each file has at least 50% coverage