Skip to content

coverage

stable

Code coverage tracker that records which lines of which files have been executed, computes percentages, and formats summary reports.

use plugin coverage::{CoverageTracker.new, mark_line, mark_lines, …}
14 functions Utilities
/ filter jk navigate Esc clear
Functions (14)
  1. CoverageTracker.new Create a new coverage tracker instance
  2. mark_line Mark a single line as covered
  3. mark_lines Mark multiple lines as covered
  4. set_total_lines Set total line count for a file
  5. is_covered Check if a specific line is covered
  6. line_count Get number of covered lines for a file
  7. percentage Get coverage percentage for a file
  8. file_report Get coverage report table for a file
  9. summary Get aggregate coverage summary
  10. uncovered_lines List uncovered line numbers for a file
  11. reset Clear all coverage data
  12. merge Merge coverage data from another tracker
  13. files List all tracked file names
  14. format_report Format a summary table as a string

Create a new coverage tracker instance

Creates a new coverage tracker handle. The tracker maintains a per-file set of covered line numbers and optional total line counts.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()

Mark a single line as covered

Records that a specific line number in a file was executed.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.mark_line("src/main.zolo", 10)
cov.mark_line("src/main.zolo", 11)
cov.mark_line("src/main.zolo", 15)

Mark multiple lines as covered

Records multiple line numbers for a file at once. lines is a table of integer line numbers.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.mark_lines("src/utils.zolo", #{1: 5, 2: 6, 3: 7, 4: 10, 5: 11})

Set total line count for a file

Sets the total number of lines in a file. Required to compute coverage percentages with percentage and file_report.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.set_total_lines("src/main.zolo", 100)
cov.mark_lines("src/main.zolo", #{1: 1, 2: 2, 3: 5, 4: 10})
print("coverage: {cov.percentage("src/main.zolo")}%")

Check if a specific line is covered

Returns true if the given line number in the given file has been marked as covered.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.mark_line("src/app.zolo", 42)
print(cov.is_covered("src/app.zolo", 42))
print(cov.is_covered("src/app.zolo", 43))

Get number of covered lines for a file

Returns the number of distinct covered lines recorded for a file.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.mark_lines("src/app.zolo", #{1: 1, 2: 3, 3: 5})
print("covered lines: {cov.line_count("src/app.zolo")}")

Get coverage percentage for a file

Returns the coverage percentage (0–100) for a file. Requires set_total_lines to have been called for that file; returns 0 otherwise.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.set_total_lines("src/app.zolo", 50)
cov.mark_lines("src/app.zolo", #{1: 1, 2: 2, 3: 3, 4: 4, 5: 5})
print("coverage: {cov.percentage("src/app.zolo")}%")

Get coverage report table for a file

Returns a summary table for a single file with covered_lines, total_lines, and percentage fields.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.set_total_lines("src/app.zolo", 200)
cov.mark_lines("src/app.zolo", #{1: 10, 2: 20, 3: 30})

let report = cov.file_report("src/app.zolo")
print("covered: {report["covered_lines"]}/{report["total_lines"]}")

Get aggregate coverage summary

Returns aggregate coverage across all tracked files. Returns files, total_lines, covered_lines, and percentage.

use plugin coverage::{CoverageTracker, format_report}

let cov = CoverageTracker.new()
cov.set_total_lines("src/a.zolo", 100)
cov.set_total_lines("src/b.zolo", 50)
cov.mark_lines("src/a.zolo", #{1: 1, 2: 2, 3: 3})
cov.mark_lines("src/b.zolo", #{1: 1, 2: 2})

let s = cov.summary()
print(format_report(s))

List uncovered line numbers for a file

Returns a sorted table of line numbers (1 to the highest covered line) that have not been marked as covered.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.mark_line("src/app.zolo", 1)
cov.mark_line("src/app.zolo", 3)
cov.mark_line("src/app.zolo", 5)

let missing = cov.uncovered_lines("src/app.zolo")
print("uncovered: {missing[1]}, {missing[2]}")

Clear all coverage data

Clears all covered lines and total line counts, resetting the tracker to an empty state.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.mark_line("src/app.zolo", 1)
cov.reset()
print("after reset: {cov.line_count("src/app.zolo")}")

Merge coverage data from another tracker

Merges coverage data from another CoverageTracker into this one. Covered lines are unioned; total line counts take the maximum of both trackers.

use plugin coverage::{CoverageTracker}

let cov1 = CoverageTracker.new()
let cov2 = CoverageTracker.new()
cov1.mark_line("src/app.zolo", 1)
cov2.mark_line("src/app.zolo", 2)
cov1.merge(cov2)
print("total covered: {cov1.line_count("src/app.zolo")}")

List all tracked file names

Returns a sorted table of all file names that have been tracked.

use plugin coverage::{CoverageTracker}

let cov = CoverageTracker.new()
cov.mark_line("src/a.zolo", 1)
cov.mark_line("src/b.zolo", 1)
let names = cov.files()
print("tracked: {names[1]}, {names[2]}")

Format a summary table as a string

Formats a coverage summary table (from summary()) as a human-readable multi-line string. This is a standalone function, not a method.

use plugin coverage::{CoverageTracker, format_report}

let cov = CoverageTracker.new()
cov.set_total_lines("src/main.zolo", 100)
cov.mark_lines("src/main.zolo", #{1: 1, 2: 2, 3: 3, 4: 4, 5: 5})
print(format_report(cov.summary()))
enespt-br