New MCP tools: - collect_coverage(name) - combine parallel files, return summary - generate_coverage_report(name, format) - HTML/XML/JSON reports - combine_coverage(names) - aggregate across test runs - delete_coverage(name?, older_than_days?) - cleanup Modified: - launch_flowgraph() now accepts enable_coverage parameter - stop() uses 30s timeout for graceful shutdown (coverage needs atexit) Docker: - Dockerfile.gnuradio-coverage extends runtime with python3-coverage - entrypoint-coverage.sh wraps execution with coverage run - .coveragerc configured for GNU Radio source paths Tests: 125 unit tests (21 new), 80% coverage
40 lines
1.3 KiB
Docker
40 lines
1.3 KiB
Docker
# Coverage-enabled GNU Radio runtime container
|
|
# Extends gnuradio-runtime with Python code coverage instrumentation
|
|
#
|
|
# Build:
|
|
# docker build -f docker/Dockerfile.gnuradio-coverage -t gnuradio-coverage:latest docker/
|
|
#
|
|
# Usage:
|
|
# docker run --rm -v $(pwd)/coverage:/coverage \
|
|
# -e ENABLE_COVERAGE=1 \
|
|
# gnuradio-coverage:latest python3 /flowgraphs/my_flowgraph.py
|
|
#
|
|
# The coverage data is written to /coverage/.coverage on container exit.
|
|
# Mount this volume to persist coverage data between runs.
|
|
|
|
FROM gnuradio-runtime:latest
|
|
|
|
LABEL org.opencontainers.image.title="GNU Radio Coverage Runtime"
|
|
LABEL org.opencontainers.image.description="GNU Radio runtime with Python code coverage support"
|
|
|
|
# Install Python coverage.py via apt (pip3 not available in base image)
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
python3-coverage \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy coverage configuration
|
|
COPY .coveragerc /etc/coveragerc
|
|
|
|
# Copy coverage-aware entrypoint
|
|
COPY entrypoint-coverage.sh /entrypoint-coverage.sh
|
|
RUN chmod +x /entrypoint-coverage.sh
|
|
|
|
# Coverage data directory - mount a volume here to persist
|
|
VOLUME /coverage
|
|
|
|
# Environment variables for coverage
|
|
ENV COVERAGE_FILE=/coverage/.coverage
|
|
ENV COVERAGE_RCFILE=/etc/coveragerc
|
|
|
|
ENTRYPOINT ["/entrypoint-coverage.sh"]
|