blogex: coverage floor (74) + test-scaffolding exclusions
`test_coverage` sets the floor the Lens pass enforces, measured first: 74.53% with test/support excluded (`mix test --cover` and the exported sample give the same number). The rule — a FLOOR, ratcheted up as behavior yaks land, never lowered — is written next to the config, along with why each module is excluded (test scaffolding only: fixtures measure the tests, not the library). Wiring, per the fast/push split: `test.coverage` runs the suite once with `--cover --export-coverage default`; the `coverage` sensor then enforces the floor from that export via `mix test.coverage` (no second suite run). So `verify` runs the suite first and the sensors after it. The sensor guards on the export existing: `mix test.coverage` exits 0 when it finds no .coverdata, and a floor check that did not run must not report success. blogex/.gitignore: cover/ (generated).
This commit is contained in:
@@ -13,6 +13,7 @@ defmodule Blogex.MixProject do
|
||||
start_permanent: Mix.env() == :prod,
|
||||
aliases: aliases(),
|
||||
deps: deps(),
|
||||
test_coverage: test_coverage(),
|
||||
docs: docs(),
|
||||
package: package(),
|
||||
description: "A multi-blog engine powered by NimblePublisher for Phoenix apps"
|
||||
@@ -49,6 +50,30 @@ defmodule Blogex.MixProject do
|
||||
]
|
||||
end
|
||||
|
||||
# The coverage floor the Lens pass enforces (`make verify` -> `make coverage`
|
||||
# in blogex/). Rule: the threshold is a FLOOR. Raise it as behavior-test yaks
|
||||
# land; never lower it. A drop means the change (or an exclusion) is wrong.
|
||||
#
|
||||
# Measured 2026-10-26, with the test scaffolding below excluded: 74.53% — the
|
||||
# same via `mix test --cover` and via `mix test --cover --export-coverage
|
||||
# default` + `mix test.coverage`. Floor is the integer below that.
|
||||
#
|
||||
# Excluded: the test scaffolding (Blogex.Test.*) only. Fixtures measure the
|
||||
# tests, not the library. Everything in lib/blogex counts, and today's gaps
|
||||
# are real: Blogex (the delegating facade), Blogex.Components and
|
||||
# Blogex.Layout are at 0% because the router tests only exercise the JSON
|
||||
# responses — moving this floor up is the behavior-test work.
|
||||
defp test_coverage do
|
||||
[
|
||||
summary: [threshold: 74],
|
||||
ignore_modules: [
|
||||
Blogex.Test.FakeBlog,
|
||||
Blogex.Test.PostBuilder,
|
||||
Blogex.Test.Setup
|
||||
]
|
||||
]
|
||||
end
|
||||
|
||||
defp docs do
|
||||
[
|
||||
main: "readme",
|
||||
|
||||
Reference in New Issue
Block a user