summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndrea Leopardi <an.leopardi@gmail.com>2023-04-20 15:37:35 +0100
committerGitHub <noreply@github.com>2023-04-20 15:37:35 +0100
commit9139b4da9919095b615c35ae7572dfe3693dd04a (patch)
tree1ee62031308c07a61a8256a5cf09763a4a5dda77 /lib
parent2f9f2311e394b6383e1c42ec1a56fc7d7dd9e787 (diff)
downloadelixir-9139b4da9919095b615c35ae7572dfe3693dd04a.tar.gz
Validate --no-exit in "mix format" (#12530)
Diffstat (limited to 'lib')
-rw-r--r--lib/mix/lib/mix/tasks/format.ex4
-rw-r--r--lib/mix/test/mix/tasks/format_test.exs6
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/mix/lib/mix/tasks/format.ex b/lib/mix/lib/mix/tasks/format.ex
index 52015db56..6d4afc874 100644
--- a/lib/mix/lib/mix/tasks/format.ex
+++ b/lib/mix/lib/mix/tasks/format.ex
@@ -225,6 +225,10 @@ defmodule Mix.Tasks.Format do
IO.warn("--check-equivalent has been deprecated and has no effect")
end
+ if opts[:no_exit] && !opts[:check_formatted] do
+ Mix.raise("--no-exit can only be used together with --check-formatted")
+ end
+
{formatter_opts_and_subs, _sources} =
eval_deps_and_subdirectories(dot_formatter, [], formatter_opts, [dot_formatter])
diff --git a/lib/mix/test/mix/tasks/format_test.exs b/lib/mix/test/mix/tasks/format_test.exs
index 6e63246e3..cf6f6b544 100644
--- a/lib/mix/test/mix/tasks/format_test.exs
+++ b/lib/mix/test/mix/tasks/format_test.exs
@@ -175,6 +175,12 @@ defmodule Mix.Tasks.FormatTest do
assert_received {:mix_shell, :info, ["The following files are not formatted" <> _]}
end
+ test "raises an error if --no-exit is passed without --check-formatted" do
+ assert_raise Mix.Error, ~r"--no-exit can only be used together", fn ->
+ Mix.Tasks.Format.run(["--no-exit", "-"])
+ end
+ end
+
test "uses inputs and configuration from .formatter.exs", context do
in_tmp(context.test, fn ->
File.write!(".formatter.exs", """