From 57f0648e763a8922346bc238ea3f2aa9a8d1aee1 Mon Sep 17 00:00:00 2001 From: Erick Dennis Date: Thu, 23 Mar 2023 11:47:43 +0100 Subject: Don't call formatter on directories (#12488) --- lib/mix/lib/mix/tasks/format.ex | 4 +++- lib/mix/test/mix/tasks/format_test.exs | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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", """ -- cgit v1.2.1