From 5b0dabc0f7c4e470908fe53ab6612aae076b6565 Mon Sep 17 00:00:00 2001 From: Michael Davis Date: Mon, 23 May 2022 08:35:58 -0500 Subject: [PATCH] add test case for publishDiagnostic with -1 line position --- .../lib/argument_error_in_compile.ex | 5 ++++ .../argument_error_in_compile/mix.exs | 11 ++++++++ apps/language_server/test/server_test.exs | 25 ++++++++++++++++++- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 apps/language_server/test/fixtures/argument_error_in_compile/lib/argument_error_in_compile.ex create mode 100644 apps/language_server/test/fixtures/argument_error_in_compile/mix.exs diff --git a/apps/language_server/test/fixtures/argument_error_in_compile/lib/argument_error_in_compile.ex b/apps/language_server/test/fixtures/argument_error_in_compile/lib/argument_error_in_compile.ex new file mode 100644 index 000000000..8e651f68a --- /dev/null +++ b/apps/language_server/test/fixtures/argument_error_in_compile/lib/argument_error_in_compile.ex @@ -0,0 +1,5 @@ +defmodule ElixirLS.LanguageServer.Fixtures.BuildErrors.ArgumentErrorInCompile do + # gives: + # (ArgumentError) each element in tuple list has to be a {function_name :: atom, arity :: 0..255} tuple, got: [hello: 0] + defoverridable [[hello: 0]] +end diff --git a/apps/language_server/test/fixtures/argument_error_in_compile/mix.exs b/apps/language_server/test/fixtures/argument_error_in_compile/mix.exs new file mode 100644 index 000000000..091bec2eb --- /dev/null +++ b/apps/language_server/test/fixtures/argument_error_in_compile/mix.exs @@ -0,0 +1,11 @@ +defmodule ElixirLS.LanguageServer.Fixtures.ArgumentErrorInCompile.Mixfile do + use Mix.Project + + def project do + [app: :els_argument_error_in_compile_test, version: "0.1.0"] + end + + def application do + [] + end +end diff --git a/apps/language_server/test/server_test.exs b/apps/language_server/test/server_test.exs index c9faf3b0e..aee91968b 100644 --- a/apps/language_server/test/server_test.exs +++ b/apps/language_server/test/server_test.exs @@ -1024,7 +1024,7 @@ defmodule ElixirLS.LanguageServer.ServerTest do end @tag :fixture - test "reports build diagnostics", %{server: server} do + test "reports CompileError in build diagnostics", %{server: server} do in_fixture(__DIR__, "build_errors", fn -> error_file = SourceFile.path_to_uri("lib/has_error.ex") @@ -1046,6 +1046,29 @@ defmodule ElixirLS.LanguageServer.ServerTest do end) end + @tag :fixture + test "reports ArgumentError in build diagnostics", %{server: server} do + in_fixture(__DIR__, "argument_error_in_compile", fn -> + error_file = SourceFile.path_to_uri("lib/argument_error_in_compile.ex") + + initialize(server) + + assert_receive notification("textDocument/publishDiagnostics", %{ + "uri" => ^error_file, + "diagnostics" => [ + %{ + "message" => "(ArgumentError) each element in tuple list has to be a {function_name :: atom, arity :: 0..255} tuple, got: [hello: 0]" <> _, + "range" => %{"end" => %{"line" => -1}, "start" => %{"line" => -1}}, + "severity" => 1 + } + ] + }), + 1000 + + wait_until_compiled(server) + end) + end + @tag :fixture test "reports token missing error diagnostics", %{server: server} do in_fixture(__DIR__, "token_missing_error", fn ->