app: exclude embed_templates wrappers and the release-only Application
Raises the measured total 86.17% -> 86.79% without touching a test, because the
excluded modules hold no behavior a test can observe:
- FirehoseWeb.{Blog,UserRegistration,UserSettings}HTML are `use` +
`embed_templates` only; every function in them is macro-generated. Their
TEMPLATES are already exercised through the controller tests.
- Firehose.Application: start/2 is proven by the suite booting at all, and
config_change/3 runs only on a release hot upgrade.
Deliberately NOT excluded, despite being embed_templates wrappers:
FirehoseWeb.PageHTML (blog_label/1, post_base_path/1) and
FirehoseWeb.UserSessionHTML (local_mail_adapter?/0) carry real private logic, so
their sub-100% coverage is a behavior gap for the controller/auth yak, not macro
noise.
Also drops the now-dead Firehose.Checks.NoConnShadowing entry: lib_dev/ is no
longer compiled, so it is not measurable. Floor stays 86 (86.79 rounds down).
This commit is contained in:
+28
-7
@@ -114,9 +114,11 @@ defmodule Firehose.MixProject do
|
||||
# not the floor.
|
||||
#
|
||||
# Measured 2026-10-26 (PostgreSQL on localhost:5432, exclusions below):
|
||||
# 86.17%, identical via `mix test --cover` and via
|
||||
# `mix test --cover --export-coverage default` + `mix test.coverage`, and
|
||||
# stable across seeds. Floor is the integer below that.
|
||||
# 86.79% after the last exclusion revision (86.17% before excluding the
|
||||
# embed_templates wrappers and Firehose.Application), identical via
|
||||
# `mix test --cover` and via `mix test --cover --export-coverage default` +
|
||||
# `mix test.coverage`, and stable across seeds. Floor is the integer below
|
||||
# that — so a floor of 86 means "at least 86.00%".
|
||||
#
|
||||
# `test.coverage` deletes stale exports before sampling: `mix test.coverage`
|
||||
# imports *every* .coverdata it finds, so leftover exports from earlier runs
|
||||
@@ -133,15 +135,31 @@ defmodule Firehose.MixProject do
|
||||
# FirehoseWeb.ErrorJSON Phoenix.Controller.status_message_from_template/1
|
||||
# * FirehoseWeb the `use FirehoseWeb` macro: imports and aliases
|
||||
# only, nothing that executes
|
||||
# * embed_templates wrappers FirehoseWeb.BlogHTML,
|
||||
# FirehoseWeb.UserRegistrationHTML,
|
||||
# FirehoseWeb.UserSettingsHTML: each is `use` +
|
||||
# `embed_templates`, so every function in them is
|
||||
# generated by the macro. Their TEMPLATES are
|
||||
# exercised through the controller tests; the
|
||||
# wrapper modules hold no hand-written code.
|
||||
# NOTE: PageHTML and UserSessionHTML are
|
||||
# deliberately NOT excluded — both carry private
|
||||
# helpers with real logic (blog_label,
|
||||
# post_base_path, local_mail_adapter?), so their
|
||||
# gaps are behavior gaps, not macro noise.
|
||||
# * Firehose.Application start/2 is proven by the suite booting at all (a
|
||||
# broken supervision tree fails every test), and
|
||||
# config_change/3 only runs on a release hot
|
||||
# upgrade, which no test can reach.
|
||||
# * Firehose.Release production release tasks (`mix ecto.migrate` on
|
||||
# Dokku); the suite never runs them
|
||||
# * Firehose.Checks.NoConnShadowing
|
||||
# lib_dev credo check, exercised by `mix credo`
|
||||
# and not by tests
|
||||
# * test scaffolding Firehose.DataCase, FirehoseWeb.ConnCase,
|
||||
# Firehose.AccountsFixtures, Firehose.Test.FakeBlog:
|
||||
# fixtures measure the tests, not the app
|
||||
#
|
||||
# `Firehose.Checks.NoConnShadowing` needs no entry: lib_dev/ is no longer in
|
||||
# elixirc_paths (credo loads it from source), so it is not measurable here.
|
||||
#
|
||||
# Everything else counts — CoreComponents, controllers, LiveViews included:
|
||||
# that is where the behavior-test work shows up as a higher floor.
|
||||
defp test_coverage do
|
||||
@@ -151,11 +169,14 @@ defmodule Firehose.MixProject do
|
||||
Firehose.Repo,
|
||||
Firehose.Mailer,
|
||||
Firehose.Release,
|
||||
Firehose.Application,
|
||||
FirehoseWeb,
|
||||
FirehoseWeb.Telemetry,
|
||||
FirehoseWeb.ErrorHTML,
|
||||
FirehoseWeb.ErrorJSON,
|
||||
Firehose.Checks.NoConnShadowing,
|
||||
FirehoseWeb.BlogHTML,
|
||||
FirehoseWeb.UserRegistrationHTML,
|
||||
FirehoseWeb.UserSettingsHTML,
|
||||
Firehose.DataCase,
|
||||
FirehoseWeb.ConnCase,
|
||||
Firehose.AccountsFixtures,
|
||||
|
||||
Reference in New Issue
Block a user