# Coverage config for the dedicated `test-parsl` CI job (plan §1.6 item 2, m46 IT5).
#
# Scope is the parsl-ONLY modules — `parsl_backend` and `common.relay_engine`. The main pyproject
# `[tool.coverage.run]` OMITs `*/parsl_backend/*` and `*/common/*` (the main matrix installs no parsl,
# so those tests importorskip out); this job re-measures them from the frozen m46 suite with NO omit.
#
# `common.tasks_engine` is EXECUTED on this job too (the TPE arm of `test_parsl_m43_engine_on_tpe`)
# but is deliberately NOT listed here: it GATES on the `test-dask` job whose m43/m45 suites cover all
# of it (including `dask_run_join`). Listing it here would double-gate a module the parsl suite only
# partially exercises — each `common/` module is gated by exactly ONE job (plan §1.6 item 2).
# `common.relay_engine` MUST stay listed (no dask-suite caller — it would sit at 0% elsewhere).
#
# The `test-parsl` pytest step uses a BARE `--cov` (mandatory to activate coverage at all — modifiers
# without it are a silent no-op) plus `--cov-config=.coveragerc-parsl`, and NO path-valued `--cov=`
# (which would OVERRIDE this `[run] source` — plan §1.6 item 3, tests-B-cov-1). fail_under 90 is the
# §B.3 diff-coverage gate; branch coverage is part of the frozen gate.
# The §1.4 transport bodies (peer shuffle/join + the HTTP block plane) execute ONLY inside HTEX
# WORKER processes (the TPE arm also runs in-process), so the driver-only tracer never sees them.
# `parallel = true` + `sigterm = true`, a `coverage.process_startup()` .pth hook, and
# `COVERAGE_PROCESS_START=.coveragerc-parsl` in the worker env (the HTEX workers inherit it) make the
# workers self-measure and flush; the CI step folds the driver file and `coverage combine`s the union
# before the deferred `coverage report --fail-under=90` gate.
[run]
branch = true
parallel = true
sigterm = true
source =
    graphed_executors.parsl_backend
    graphed_executors.common.relay_engine
    graphed_executors.common.http_plane

[report]
fail_under = 90
show_missing = true
