Skip to main content

improve-coverage

Improve code coverage for a Bazel C++ test target or source file

Informações da origem

Repositório
redpanda-data/redpanda
Última atividade na origem
20 de abril de 2026 às 17:47
Idioma detectado do SKILL.md
inglês
Estrelas
12.614
Forks
795

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
improve-coverage
description
Improve code coverage for a Bazel C++ test target or source file
user-invocable
true
# Improve Code Coverage Improve test coverage for a Bazel C++ test target or source file path. ## Input Resolution 1. **Bazel test target** (starts with `//`, e.g. `//src/v/bytes/tests:iobuf_test`): use it directly. 2. **Source file path** (e.g. `src/v/bytes/iobuf.cc`): find the test target: ```bash bazel query "kind('.*_test', rdeps(//src/v/..., //$(dirname $FILE):$(basename $FILE .cc), 1))" 2>/dev/null ``` If multiple targets match, pick the one in the closest `tests/` directory. If none match, tell the user and stop. ## Workflow ### Step 1: Baseline Coverage Run coverage and read the LLM report: ```bash tools/run-cov <target> -r llm ``` Note the **total line coverage percentage** — this is the baseline to beat. Read the report and identify: - **Uncovered functions** — highest impact. One test can cover many lines. - **Partially covered functions** — uncovered branches indicate missing error-path or edge-case tests. - **Zero-coverage files in scope** — may need new test cases entirely. ### Step 2: Understand the Code Read the source files named in the report. Focus on: - Uncovered functions: what they do, inputs, preconditions. - The existing test file: patterns, fixtures, helpers. Key codebase patterns: - `redpanda_cc_gtest` targets use GTest (`TEST()`, `TEST_F()`). `redpanda_cc_btest` targets use Seastar Boost test (`SEASTAR_THREAD_TEST_CASE`). Match whichever the test file uses. - Many functions are `ss::future<>` coroutines — test with `SEASTAR_THREAD_TEST_CASE` or the Seastar GTest runner. - Use `ss` namespace prefix for Seastar types. - Use `EXPECT_*` for most checks, `ASSERT_*` only when continuing would crash. ### Step 3: Write Tests Prioritize by impact: 1. **Uncovered functions** — call each one. A 20-line function = 20 lines covered. 2. **Uncovered error paths** — trigger the uncovered branches in partially covered functions. 3. **Zero-coverage files** — add smoke tests if practical. Rules: - Add tests to the **existing test file**. Don't create new files or BUILD targets unless necessary. - Follow existing naming conventions in the file. - One logical behavior per test case. - Prefer deterministic tests — construct error conditions directly. - Do NOT add comments that restate the code. ### Step 4: Verify Build ```bash bazel build <target> ``` Fix compilation errors before proceeding. ### Step 5: Verify Coverage Re-run coverage: ```bash tools/run-cov <target> -r llm ``` Compare to the baseline. Report: ``` Coverage: X.Y% → A.B% (+N.N%) New lines covered: <count> ``` If coverage did not improve, investigate: - Build errors preventing the new tests from running? - Code compiled out by preprocessor guards? - Template instantiations not triggered by test types? ### Step 6: Summary Report: - Which functions/paths are now covered - What test cases were added - Before/after coverage numbers - Remaining significant gaps and suggestions
Ver no GitHub