diff --git a/app/mix.exs b/app/mix.exs index c1bdc1a..b091dd1 100644 --- a/app/mix.exs +++ b/app/mix.exs @@ -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,