From a8b97aedfd992b8969fcd80fafa37523c3274c13 Mon Sep 17 00:00:00 2001 From: Nenad Lukic Date: Mon, 30 Sep 2024 06:20:28 +0300 Subject: [PATCH 1/3] Fix issue with expecting default ignore file when checking file size and adds case to check custom ignore file size --- lib/mix/tasks/dialyzer.ex | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/mix/tasks/dialyzer.ex b/lib/mix/tasks/dialyzer.ex index ceca844..c0c6dea 100644 --- a/lib/mix/tasks/dialyzer.ex +++ b/lib/mix/tasks/dialyzer.ex @@ -187,9 +187,15 @@ defmodule Mix.Tasks.Dialyzer do No :ignore_warnings opt specified in mix.exs. Using default: #{default}. """) - ignore_warnings && File.exists?(ignore_warnings) && + !ignore_warnings && File.exists?(default) && match?(%{size: size} when size == 0, File.stat!(default)) -> info(""" + No :ignore_warnings opt specified in mix.exs. Using default, but file is empty. + """) + + ignore_warnings && File.exists?(ignore_warnings) && + match?(%{size: size} when size == 0, File.stat!(ignore_warnings)) -> + info(""" :ignore_warnings opt specified in mix.exs: #{ignore_warnings}, but file is empty. """) From 667fa25d9b6314c337e7657ae3348c2b6b544e34 Mon Sep 17 00:00:00 2001 From: Nenad Lukic Date: Tue, 1 Oct 2024 18:11:23 +0300 Subject: [PATCH 2/3] Rearange ignore file evaluation to the correct order --- lib/mix/tasks/dialyzer.ex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/mix/tasks/dialyzer.ex b/lib/mix/tasks/dialyzer.ex index c0c6dea..765011f 100644 --- a/lib/mix/tasks/dialyzer.ex +++ b/lib/mix/tasks/dialyzer.ex @@ -182,11 +182,6 @@ defmodule Mix.Tasks.Dialyzer do ignore_warnings = Dialyxir.Project.dialyzer_ignore_warnings() cond do - !ignore_warnings && File.exists?(default) -> - info(""" - No :ignore_warnings opt specified in mix.exs. Using default: #{default}. - """) - !ignore_warnings && File.exists?(default) && match?(%{size: size} when size == 0, File.stat!(default)) -> info(""" @@ -199,6 +194,11 @@ defmodule Mix.Tasks.Dialyzer do :ignore_warnings opt specified in mix.exs: #{ignore_warnings}, but file is empty. """) + !ignore_warnings && File.exists?(default) -> + info(""" + No :ignore_warnings opt specified in mix.exs. Using default: #{default}. + """) + ignore_warnings && File.exists?(ignore_warnings) -> info(""" ignore_warnings: #{ignore_warnings} From c849d66f88ab8444b015c5ac5e9fe88335fa8144 Mon Sep 17 00:00:00 2001 From: Nenad Lukic Date: Tue, 1 Oct 2024 18:11:43 +0300 Subject: [PATCH 3/3] Adds tests for empty ignore files --- test/dialyxir/formatter_test.exs | 21 +++++++++++++++++++ .../ignore_default_empty/.dialyzer_ignore.exs | 0 test/fixtures/ignore_default_empty/mix.exs | 14 +++++++++++++ .../ignore_empty/ignore_empty_test.exs | 0 test/fixtures/ignore_empty/mix.exs | 15 +++++++++++++ 5 files changed, 50 insertions(+) create mode 100644 test/fixtures/ignore_default_empty/.dialyzer_ignore.exs create mode 100644 test/fixtures/ignore_default_empty/mix.exs create mode 100644 test/fixtures/ignore_empty/ignore_empty_test.exs create mode 100644 test/fixtures/ignore_empty/mix.exs diff --git a/test/dialyxir/formatter_test.exs b/test/dialyxir/formatter_test.exs index bb75883..9dc8738 100644 --- a/test/dialyxir/formatter_test.exs +++ b/test/dialyxir/formatter_test.exs @@ -92,6 +92,27 @@ defmodule Dialyxir.FormatterTest do end) end + test "ignores an empty default ignore file" do + in_project(:ignore_default_empty, fn -> + {:ok, remaining, :no_unused_filters} = + Formatter.format_and_filter([], Project, [], [IgnoreFileStrictFormatter]) + + assert Project.dialyzer_ignore_warnings() == nil + assert remaining == [] + end) + end + + test "ignores an empty ignore file specified in mix" do + in_project(:ignore_empty, fn -> + {:ok, remaining, :no_unused_filters} = + Formatter.format_and_filter([], Project, [], [IgnoreFileStrictFormatter]) + + assert Project.dialyzer_ignore_warnings() == "ignore_empty_test.exs" + assert remaining == [] + end) + end + + test "does not filter lines not matching the pattern" do warning = {:warn_return_no_exit, {~c"a/different_file.ex", 17}, diff --git a/test/fixtures/ignore_default_empty/.dialyzer_ignore.exs b/test/fixtures/ignore_default_empty/.dialyzer_ignore.exs new file mode 100644 index 0000000..e69de29 diff --git a/test/fixtures/ignore_default_empty/mix.exs b/test/fixtures/ignore_default_empty/mix.exs new file mode 100644 index 0000000..48e0a32 --- /dev/null +++ b/test/fixtures/ignore_default_empty/mix.exs @@ -0,0 +1,14 @@ +defmodule Ignore.Mixfile do + use Mix.Project + + def project do + [ + app: :ignore, + version: "0.1.0", + prune_code_paths: false, + dialyzer: [ + list_unused_filters: true + ] + ] + end +end diff --git a/test/fixtures/ignore_empty/ignore_empty_test.exs b/test/fixtures/ignore_empty/ignore_empty_test.exs new file mode 100644 index 0000000..e69de29 diff --git a/test/fixtures/ignore_empty/mix.exs b/test/fixtures/ignore_empty/mix.exs new file mode 100644 index 0000000..ebcbd61 --- /dev/null +++ b/test/fixtures/ignore_empty/mix.exs @@ -0,0 +1,15 @@ +defmodule Ignore.Mixfile do + use Mix.Project + + def project do + [ + app: :ignore, + version: "0.1.0", + prune_code_paths: false, + dialyzer: [ + ignore_warnings: "ignore_empty_test.exs", + list_unused_filters: true + ] + ] + end +end