summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PROJECT_CONTEXT.md1
-rw-r--r--TODO.md1
-rw-r--r--doc/HOWTO.md12
-rwxr-xr-xscripts/gen_coverage_report.sh13
4 files changed, 25 insertions, 2 deletions
diff --git a/PROJECT_CONTEXT.md b/PROJECT_CONTEXT.md
index 7634ad9..9a9ecea 100644
--- a/PROJECT_CONTEXT.md
+++ b/PROJECT_CONTEXT.md
@@ -28,6 +28,7 @@ Style:
## Project Roadmap
### Recently Completed
+- **Task #46: Enhance Coverage Script**: Updated coverage report script to support directory filtering (e.g., `./scripts/gen_coverage_report.sh src/procedural`).
- **Task #45: Improve Procedural Generation Coverage**: Achieved 96% coverage for `src/procedural/` by implementing comprehensive tests for Perlin noise, periodic blending, and parameter handling.
- **Task #44: Developer Tooling (Coverage)**: Added `DEMO_ENABLE_COVERAGE` CMake option and created `scripts/gen_coverage_report.sh` to generate HTML coverage reports using `lcov` on macOS.
- **Skybox & Two-pass Rendering Stability**: Resolved "black screen" and validation errors by implementing a robust two-pass rendering architecture (Pass 1: Skybox/Clear, Pass 2: Scene Objects). Implemented a rotating skybox using world-space ray unprojection (`inv_view_proj`) and a multi-octave procedural noise generator.
diff --git a/TODO.md b/TODO.md
index 1597129..959ca9c 100644
--- a/TODO.md
+++ b/TODO.md
@@ -3,6 +3,7 @@
This file tracks prioritized tasks with detailed attack plans.
## Recently Completed (February 4, 2026)
+- [x] **Task #46: Enhance Coverage Script**: Updated `scripts/gen_coverage_report.sh` to accept an optional directory argument for targeted coverage reports (e.g., `src/procedural`).
- [x] **Task #45: Improve Procedural Generation Coverage**:
- [x] **Unit Tests:** Implemented comprehensive tests for `gen_perlin`, `make_periodic`, and default parameter handling in `src/tests/test_procedural.cc`.
- [x] **Coverage Boost:** Increased `src/procedural/generator.cc` coverage from 38% to 96%.
diff --git a/doc/HOWTO.md b/doc/HOWTO.md
index 29492d5..e562679 100644
--- a/doc/HOWTO.md
+++ b/doc/HOWTO.md
@@ -128,10 +128,20 @@ To generate an HTML code coverage report for the project:
2. **Run the coverage script:**
```bash
- ./scripts/gen_coverage_report.sh
+ ./scripts/gen_coverage_report.sh [optional_target_dir]
```
This script will configure the build with `-DDEMO_ENABLE_COVERAGE=ON`, run the tests, and generate a report in `build_coverage/coverage_report/`. It will then attempt to open the report in your browser.
+ **Examples:**
+ * Full project report:
+ ```bash
+ ./scripts/gen_coverage_report.sh
+ ```
+ * Report for `src/procedural` only:
+ ```bash
+ ./scripts/gen_coverage_report.sh src/procedural
+ ```
+
## Tools
### Updating Submodules
diff --git a/scripts/gen_coverage_report.sh b/scripts/gen_coverage_report.sh
index bae2141..b569251 100755
--- a/scripts/gen_coverage_report.sh
+++ b/scripts/gen_coverage_report.sh
@@ -7,12 +7,16 @@ set -e
PROJECT_ROOT=$(cd "$(dirname "$0")/.." && pwd)
BUILD_DIR="${PROJECT_ROOT}/build_coverage"
REPORT_DIR="${PROJECT_ROOT}/build_coverage/coverage_report"
+TARGET_FILTER="$1"
# Common lcov options to handle AppleClang quirks
LCOV_OPTS="--ignore-errors mismatch,inconsistent,gcov,format,unsupported,category"
echo "=== Code Coverage Report Generator ==="
echo "Project Root: ${PROJECT_ROOT}"
+if [ -n "$TARGET_FILTER" ]; then
+ echo "Target Filter: ${TARGET_FILTER}"
+fi
# Check for lcov
if ! command -v lcov &> /dev/null; then
@@ -48,9 +52,16 @@ echo "--- Filtering Coverage Data ---"
# Remove system headers and third-party libraries
lcov --remove coverage.info '/usr/*' "${PROJECT_ROOT}/third_party/*" "${PROJECT_ROOT}/build_coverage/*" '*/test_*' --output-file coverage_filtered.info $LCOV_OPTS
+# Apply target directory filter if provided
+if [ -n "$TARGET_FILTER" ]; then
+ echo "--- Applying Target Filter: ${TARGET_FILTER} ---"
+ # We use '*' around the filter to match the absolute path
+ lcov --extract coverage_filtered.info "*${TARGET_FILTER}*" --output-file coverage_filtered.info $LCOV_OPTS
+fi
+
echo "--- Generating HTML Report ---"
genhtml coverage_filtered.info --output-directory "${REPORT_DIR}" $LCOV_OPTS
echo "=== Coverage Report Generated ==="
echo "Open the report with:"
-echo "open ${REPORT_DIR}/index.html"
+echo "open ${REPORT_DIR}/index.html" \ No newline at end of file