Current section
Files
Jump to
Current section
Files
example_test
mix.exs
mix.exs
defmodule ExampleTest.MixProject do
use Mix.Project
@source_url "https://github.com/s3cur3/example_test"
def project do
[
app: :example_test,
version: "0.0.1",
elixir: "~> 1.12",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
aliases: aliases(),
deps: deps(),
docs: docs(),
description: "A utility for defining eminently readable example-based tests in ExUnit",
name: "ExampleTest",
package: package(),
test_coverage: [tool: ExCoveralls],
preferred_cli_env: [
check: :test,
"check.fast": :test,
coveralls: :test,
"coveralls.detail": :test,
"coveralls.json": :test,
"coveralls.html": :test,
dialyzer: :dev,
"test.all": :test
],
dialyzer: [
ignore_warnings: ".dialyzer_ignore.exs",
plt_file: {:no_warn, "priv/plts/dialyzer.plt"},
flags: [
:error_handling,
:unknown,
:unmatched_returns,
:error_handling,
:extra_return,
:missing_return
],
# Error out when an ignore rule is no longer useful so we can remove it
list_unused_filters: true
]
]
end
def application do
[]
end
defp docs do
[
extras: ["CHANGELOG.md", "README.md"],
main: "readme",
source_url: @source_url,
formatters: ["html"]
]
end
defp package do
# These are the default files included in the package
[
files: ["lib", "mix.exs", "README.md", "CHANGELOG.md"],
maintainers: ["Tyler Young"],
licenses: ["MIT"],
links: %{"GitHub" => @source_url}
]
end
# Specifies which paths to compile per environment.
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
# Specifies your project dependencies.
#
# Type `mix help deps` for examples and options.
defp deps do
List.flatten(
[
{:ex_doc, ">= 0.0.0", only: :dev, runtime: false},
# Code quality
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.2", only: [:dev, :test], runtime: false},
{:excoveralls, "~> 0.18.0", only: [:dev, :test], runtime: false}
] ++ styler_deps()
)
end
defp styler_deps do
if Version.match?(System.version(), "< 1.15.0") do
[]
else
[{:styler, "~> 0.11", only: [:dev, :test], runtime: false}]
end
end
# Aliases are shortcuts or tasks specific to the current project.
# For example, to install project dependencies and perform other setup tasks, run:
#
# $ mix setup
#
# See the documentation for `Mix` for more info on aliases.
defp aliases do
[
check: [
"clean",
"check.fast",
"test --only integration"
],
"check.fast": [
"deps.unlock --check-unused",
"compile --warnings-as-errors",
"test",
"check.quality"
],
"check.quality": [
"format --check-formatted",
"credo --strict",
"check.circular",
"check.dialyzer"
],
"check.circular": "cmd MIX_ENV=dev mix xref graph --label compile-connected --fail-above 0",
"check.dialyzer": "cmd MIX_ENV=dev mix dialyzer",
setup: ["deps.get"],
"test.all": ["test --include integration --include local_integration"]
]
end
end