summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErick Dennis <erick.dennis@gmail.com>2023-03-23 11:47:43 +0100
committerGitHub <noreply@github.com>2023-03-23 11:47:43 +0100
commit57f0648e763a8922346bc238ea3f2aa9a8d1aee1 (patch)
tree45b60d53eebc0938e96a14c1c5da49cd68406af1
parent62de47f2e0eb79d69afeb93b3033c0d53a308046 (diff)
downloadelixir-57f0648e763a8922346bc238ea3f2aa9a8d1aee1.tar.gz
Don't call formatter on directories (#12488)
-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", """