Current section

Files

Jump to
nicene lib tests_in_test_folder.ex
Raw

lib/tests_in_test_folder.ex

# credo:disable-for-this-file Nicene.TestsInTestFolder
defmodule Nicene.TestsInTestFolder do
@moduledoc """
Check to ensure all tests are in the correct folder.
"""
@explanation [check: @moduledoc]
use Credo.Check, base_priority: :high, category: :warning
@doc false
def run(source_file, params \\ []) do
source = SourceFile.source(source_file)
issue_meta = IssueMeta.for(source_file, params)
if "lib" in Path.split(source_file.filename) do
case Regex.run(~r/(\.Case[ \n,])|(\.[a-zA-Z]*Case[ \n,])|( assert )|( refute )/, source) do
nil -> []
_ -> [issue_for(issue_meta, source_file.filename)]
end
else
[]
end
end
defp issue_for(issue_meta, filename) do
format_issue(issue_meta,
message: "Tests are in the `lib` folder",
trigger: filename
)
end
end