summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/mix/lib/mix/tasks/format.ex4
-rw-r--r--lib/mix/test/mix/tasks/format_test.exs10
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/mix/lib/mix/tasks/format.ex b/lib/mix/lib/mix/tasks/format.ex
index 8965aaa11..fe03014f1 100644
--- a/lib/mix/lib/mix/tasks/format.ex
+++ b/lib/mix/lib/mix/tasks/format.ex
@@ -586,7 +586,9 @@ defmodule Mix.Tasks.Format do
end
defp stdin_or_wildcard("-"), do: [:stdin]
- defp stdin_or_wildcard(path), do: path |> Path.expand() |> Path.wildcard(match_dot: true)
+
+ defp stdin_or_wildcard(path),
+ do: path |> Path.expand() |> Path.wildcard(match_dot: true) |> Enum.filter(&File.regular?/1)
defp elixir_format(content, formatter_opts) do
case Code.format_string!(content, formatter_opts) do
diff --git a/lib/mix/test/mix/tasks/format_test.exs b/lib/mix/test/mix/tasks/format_test.exs
index d041d6295..d5fed1573 100644
--- a/lib/mix/test/mix/tasks/format_test.exs
+++ b/lib/mix/test/mix/tasks/format_test.exs
@@ -81,6 +81,16 @@ defmodule Mix.Tasks.FormatTest do
end)
end
+ test "does not try to format a directory that matches a given pattern", context do
+ in_tmp(context.test, fn ->
+ File.mkdir_p!("a.ex")
+
+ assert_raise Mix.Error, ~r"Could not find a file to format", fn ->
+ Mix.Tasks.Format.run(["*.ex"])
+ end
+ end)
+ end
+
test "reads file from stdin and prints to stdout", context do
in_tmp(context.test, fn ->
File.write!("a.ex", """