Skip to content

Commit 01b0758

Browse files
author
Étienne Lévesque
committed
Clean up searching for test calls
1 parent b8aeb9c commit 01b0758

File tree

1 file changed

+18
-17
lines changed
  • apps/language_server/lib/language_server/providers/code_lens

1 file changed

+18
-17
lines changed

apps/language_server/lib/language_server/providers/code_lens/test.ex

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,36 +38,37 @@ defmodule ElixirLS.LanguageServer.Providers.CodeLens.Test do
3838
|> Enum.map(fn {_k, v} -> v end)
3939
|> List.flatten()
4040

41-
for func <- runnable_functions do
42-
for {line, _col} <- calls_to(calls_list, func),
43-
is_test_module?(metadata.lines_to_env, line) do
44-
build_function_test_code_lens(func, file_path, line)
45-
end
41+
lines_to_env_list = Map.to_list(metadata.lines_to_env)
42+
43+
for func <- runnable_functions,
44+
{line, _col} <- calls_to(calls_list, func),
45+
is_test_module?(lines_to_env_list, line) do
46+
build_function_test_code_lens(func, file_path, line)
4647
end
47-
|> List.flatten()
4848
end
4949

5050
defp is_test_module?(lines_to_env), do: is_test_module?(lines_to_env, :infinity)
5151

52-
defp is_test_module?(lines_to_env, line) when is_map(lines_to_env) do
53-
lines_to_env
54-
|> Map.to_list()
55-
|> is_test_module?(line)
56-
end
57-
5852
defp is_test_module?(lines_to_env, line) when is_list(lines_to_env) do
5953
lines_to_env
60-
|> Enum.filter(fn {env_line, _env} -> env_line < line end)
61-
|> List.last()
54+
|> Enum.max_by(fn
55+
{env_line, _env} when env_line < line -> env_line
56+
_ -> -1
57+
end)
6258
|> elem(1)
6359
|> Map.get(:imports)
6460
|> Enum.any?(fn module -> module == ExUnit.Case end)
6561
end
6662

6763
defp calls_to(calls_list, {function, arity}) do
68-
calls_list
69-
|> Enum.filter(fn call_info -> call_info.func == function and call_info.arity === arity end)
70-
|> Enum.map(fn call -> call.position end)
64+
for call_info <- calls_list,
65+
call_info.func == function and call_info.arity === arity do
66+
call_info.position
67+
end
68+
69+
# calls_list
70+
# |> Enum.filter(fn call_info -> call_info.func == function and call_info.arity === arity end)
71+
# |> Enum.map(fn call -> call.position end)
7172
end
7273

7374
defp build_test_module_code_lens(file_path, {module, line}) do

0 commit comments

Comments
 (0)