Skip to content

coverage: include/morph/forms sits at 94.37%, and forms.hpp alone holds 36 of the subsystem's 41 unhit lines #410

Description

@Yaraslaut

What is wrong

include/morph/forms is at 94.37% lines on master — 1,158 of 1,227, with
41 misses and 28 partials. That is 69 unhit lines, the second-largest share in
the library after offline, and the library needs to close about 190 of its 246
to reach 99%.

Per file:

coverage miss partial file
93.67% 36 12 include/morph/forms/forms.hpp
92.70% 1 6 include/morph/forms/instance_constraints.hpp
95.08% 1 5 include/morph/forms/views.hpp

forms.hpp alone holds 36 of the subsystem's 41 misses.

Why this subsystem specifically, and why now

forms is the part of the framework this sprint is actively changing —
morph#386 (closed sets rendered as pickers), morph#387 and morph#388 all land in
DynamicForm.qml and the schema it consumes. Coverage written after those
changes settles is coverage written against the shape that ships; coverage
written before is written twice.

It is also the subsystem where an uncovered line has recently proven to be a
live defect rather than an untested branch. morph#386's own triage found
DynamicForm.qml contained zero occurrences of const or enum as schema
keys — an entire schema shape the renderer never looked at, which no coverage
number flagged because the code that should have handled it was never written.
Coverage cannot find absent code, but the 69 lines that do exist and are unhit
are exactly where the next one of those hides.

The constraint

forms.hpp is heavily templated, and codecov.yml documents that llvm-cov
places a "control reached past this block" counter on certain closing braces
with no LCOV_EXCL_LINE equivalent to suppress it. Some fraction of the 69 is
that artifact. The work includes establishing which, because a target set above
the real ceiling fails on an artifact and gets tuned out.

The 28 partials are a distinct problem from the 41 misses and are tracked by
morph#404 — a partial line is a branch nothing takes both ways, and covering it
means driving the other arm, not merely reaching the line.

Verification status: reproduced

Codecov API for LASTRADA-Software/morph, branch master, aggregated over
include/morph/forms/**. Per-file figures from the same response.

Not verified: how much of the 69 is llvm-cov artifact. codecov.yml's
existing audits of examples/common and rung 1 give the method for settling it
file by file; nobody has applied it here.

What would close this

  1. include/morph/forms reaches ≥ 99% lines — or every remaining line is
    recorded as unreachable with its reason, in the form codecov.yml's artifact
    audits use.
  2. forms.hpp's 36 misses are each in one of three states: covered, recorded as
    an llvm-cov artifact, or filed as a defect — the third being the outcome
    morph#386 suggests is live here.
  3. The subsystem carries a codecov.yml component with a target derived from
    its measured ceiling.

Blocked by morph#403 (the denominator) and sequenced after morph#386,
morph#387 and morph#388, so the tests are written against the renderer that
ships rather than the one being replaced.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: formsSubsystem: formsenhancementNew feature or requesttriage: validWell-framed; implement as written

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions