Close TD-19 quality gates

This commit is contained in:
2026-06-12 14:07:13 +02:00
parent 28e08451e4
commit e2054c9c12
7 changed files with 133 additions and 6 deletions

View File

@@ -0,0 +1,44 @@
defmodule BDS.MixProjectTest do
use ExUnit.Case, async: true
test "validate alias runs all required quality gates" do
aliases = BDS.MixProject.project()[:aliases]
assert aliases[:validate] == [
"test",
"credo --strict",
"deps.audit --ignore-file .mix_audit.ignore",
"dialyzer"
]
end
test "quality tooling deps are available in dev and test" do
deps = BDS.MixProject.project()[:deps]
assert quality_dep(deps, :credo) == {:credo, "~> 1.7", [only: [:dev, :test], runtime: false]}
assert quality_dep(deps, :mix_audit) ==
{:mix_audit, "~> 2.1", [only: [:dev, :test], runtime: false]}
end
test "mix audit exceptions stay explicit and scoped" do
ignore_file = File.read!(Path.expand("../../.mix_audit.ignore", __DIR__))
assert ignore_file =~ "GHSA-rhv4-8758-jx7v"
refute ignore_file =~ "GHSA-628h-q48j-jr6q"
end
test "validate runs in the test environment" do
cli = BDS.MixProject.cli()
assert cli[:preferred_envs][:validate] == :test
end
defp quality_dep(deps, app) do
Enum.find(deps, fn
{^app, _version} -> true
{^app, _version, _opts} -> true
_other -> false
end)
end
end