44 lines
1.2 KiB
Elixir
44 lines
1.2 KiB
Elixir
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 |