Skip to content

Commit 83be0c5

Browse files
committed
fix tests
1 parent 4f91949 commit 83be0c5

File tree

10 files changed

+150
-106
lines changed

10 files changed

+150
-106
lines changed

apps/elixir_ls_debugger/test/debugger_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ defmodule ElixirLS.Debugger.ServerTest do
2424

2525
if Process.alive?(server) do
2626
Process.monitor(server)
27-
Process.exit(server, :normal)
27+
GenServer.stop(server)
2828

2929
receive do
3030
{:DOWN, _, _, ^server, _} ->

apps/language_server/lib/language_server/mix_project.ex

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,10 @@ defmodule ElixirLS.LanguageServer.MixProject do
126126
Path.join(app_path(), "ebin")
127127
end
128128

129-
@spec consolidation_path() :: Path.t()
130-
def consolidation_path() do
131-
GenServer.call(__MODULE__, {:get, :consolidation_path})
132-
end
129+
# @spec consolidation_path() :: Path.t()
130+
# def consolidation_path() do
131+
# GenServer.call(__MODULE__, {:get, :consolidation_path})
132+
# end
133133

134134
@impl GenServer
135135
def init(_) do
@@ -185,8 +185,7 @@ defmodule ElixirLS.LanguageServer.MixProject do
185185
deps_scms: Mix.Project.deps_scms(),
186186
deps_paths: Mix.Project.deps_paths(),
187187
build_path: Mix.Project.build_path(),
188-
manifest_path: Mix.Project.manifest_path(),
189-
consolidation_path: Mix.Project.consolidation_path()
188+
manifest_path: Mix.Project.manifest_path()
190189
}
191190

192191
{:reply, :ok, state}

apps/language_server/lib/language_server/server.ex

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ defmodule ElixirLS.LanguageServer.Server do
131131

132132
@impl GenServer
133133
def terminate(reason, _state) do
134+
IO.puts(:stderr, "terminate(#{inspect(reason)})")
135+
134136
case reason do
135137
:normal ->
136138
:ok
@@ -595,8 +597,9 @@ defmodule ElixirLS.LanguageServer.Server do
595597

596598
defp handle_notification(
597599
did_change_watched_files(changes),
598-
state = %__MODULE__{mix_project?: true}
599-
) do
600+
state = %__MODULE__{project_dir: project_dir}
601+
)
602+
when is_binary(project_dir) do
600603
changes = Enum.filter(changes, &match?(%{"uri" => "file:" <> _}, &1))
601604

602605
# `settings` may not always be available here, like during testing
@@ -1135,7 +1138,7 @@ defmodule ElixirLS.LanguageServer.Server do
11351138
end
11361139

11371140
defp get_spec_code_lenses(state = %__MODULE__{}, uri, source_file) do
1138-
enabled? = Map.get(state.settings || {}, "suggestSpecs", true)
1141+
enabled? = Map.get(state.settings || %{}, "suggestSpecs", true)
11391142

11401143
if state.mix_project? and dialyzer_enabled?(state) and enabled? do
11411144
CodeLens.spec_code_lens(state.server_instance_id, uri, source_file.text)
@@ -1147,8 +1150,8 @@ defmodule ElixirLS.LanguageServer.Server do
11471150
defp get_test_code_lenses(state = %__MODULE__{}, uri, source_file) do
11481151
# TODO check why test run from lense fails when autoBuild is disabled
11491152
enabled? =
1150-
Map.get(state.settings || {}, "autoBuild", true) and
1151-
Map.get(state.settings || {}, "enableTestLenses", false)
1153+
Map.get(state.settings || %{}, "autoBuild", true) and
1154+
Map.get(state.settings || %{}, "enableTestLenses", false)
11521155

11531156
if state.mix_project? and enabled? and ElixirLS.LanguageServer.MixProject.loaded?() do
11541157
get_test_code_lenses(
@@ -1246,7 +1249,7 @@ defmodule ElixirLS.LanguageServer.Server do
12461249

12471250
defp trigger_build(state = %__MODULE__{project_dir: project_dir}) do
12481251
cond do
1249-
not state.mix_project? ->
1252+
not is_binary(project_dir) ->
12501253
state
12511254

12521255
not state.build_running? ->

apps/language_server/test/dialyzer_test.exs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
11
defmodule ElixirLS.LanguageServer.DialyzerTest do
22
# TODO: Test loading and saving manifest
33

4-
alias ElixirLS.LanguageServer.{Dialyzer, Server, Protocol, SourceFile, JsonRpc, Tracer, Build}
4+
alias ElixirLS.LanguageServer.{
5+
Dialyzer,
6+
Server,
7+
Protocol,
8+
SourceFile,
9+
JsonRpc,
10+
Tracer,
11+
Build,
12+
MixProject
13+
}
14+
515
import ExUnit.CaptureLog
616
import ElixirLS.LanguageServer.Test.ServerTestHelpers
717
use ElixirLS.Utils.MixTest.Case, async: false
@@ -23,22 +33,22 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
2333

2434
setup do
2535
{:ok, server} = Server.start_link()
36+
{:ok, _} = start_supervised(MixProject)
2637
start_server(server)
27-
Process.unlink(server)
38+
2839
{:ok, _tracer} = start_supervised(Tracer)
2940

3041
on_exit(fn ->
3142
if Process.alive?(server) do
32-
state = :sys.get_state(server)
33-
refute state.build_running?
34-
3543
Process.monitor(server)
36-
Process.exit(server, :terminate)
44+
GenServer.stop(server)
3745

3846
receive do
3947
{:DOWN, _, _, ^server, _} ->
4048
:ok
4149
end
50+
else
51+
:ok
4252
end
4353
end)
4454

@@ -411,7 +421,11 @@ defmodule ElixirLS.LanguageServer.DialyzerTest do
411421
file_c = SourceFile.Path.to_uri(Path.absname("lib/c.ex"))
412422

413423
capture_log(fn ->
414-
initialize(server, %{"dialyzerEnabled" => true, "dialyzerFormat" => "dialyxir_long"})
424+
initialize(server, %{
425+
"dialyzerEnabled" => true,
426+
"dialyzerFormat" => "dialyxir_long",
427+
"suggestSpecs" => false
428+
})
415429

416430
message = assert_receive %{"method" => "textDocument/publishDiagnostics"}, 20000
417431

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
defmodule Formatter.MixProject do
2+
use Mix.Project
3+
4+
def project do
5+
[
6+
app: :formatter,
7+
version: "0.1.0"
8+
]
9+
end
10+
11+
def application do
12+
[]
13+
end
14+
end

apps/language_server/test/providers/execute_command/mix_clean_test.exs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.MixCleanTest do
2-
alias ElixirLS.LanguageServer.{Server, Protocol, Tracer}
2+
alias ElixirLS.LanguageServer.{Server, Protocol, Tracer, MixProject}
33
use ElixirLS.Utils.MixTest.Case, async: false
44
import ElixirLS.LanguageServer.Test.ServerTestHelpers
55
use Protocol
66

77
setup do
88
{:ok, _} = start_supervised(Tracer)
99
{:ok, server} = Server.start_link()
10+
{:ok, _} = start_supervised(MixProject)
1011
start_server(server)
11-
Process.unlink(server)
1212

1313
on_exit(fn ->
1414
if Process.alive?(server) do
15-
state = :sys.get_state(server)
16-
refute state.build_running?
17-
1815
Process.monitor(server)
19-
Process.exit(server, :terminate)
16+
GenServer.stop(server)
2017

2118
receive do
2219
{:DOWN, _, _, ^server, _} ->

apps/language_server/test/providers/formatting_test.exs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,14 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
44
alias ElixirLS.LanguageServer.Providers.Formatting
55
alias ElixirLS.LanguageServer.Protocol.TextEdit
66
alias ElixirLS.LanguageServer.SourceFile
7+
alias ElixirLS.LanguageServer.MixProject
78
alias ElixirLS.LanguageServer.Test.FixtureHelpers
89

10+
setup do
11+
{:ok, _} = start_supervised(MixProject)
12+
:ok
13+
end
14+
915
@tag :fixture
1016
test "no mixfile" do
1117
in_fixture(Path.join(__DIR__, ".."), "no_mixfile", fn ->
@@ -109,6 +115,7 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
109115
@tag :fixture
110116
test "Formats a file with LF line endings" do
111117
in_fixture(Path.join(__DIR__, ".."), "formatter", fn ->
118+
MixProject.store()
112119
path = "lib/file.ex"
113120
uri = SourceFile.Path.to_uri(path)
114121

@@ -159,6 +166,7 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
159166
@tag :fixture
160167
test "Formats a file with CRLF line endings" do
161168
in_fixture(Path.join(__DIR__, ".."), "formatter", fn ->
169+
MixProject.store()
162170
path = "lib/file.ex"
163171
uri = SourceFile.Path.to_uri(path)
164172

@@ -246,6 +254,7 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
246254
@tag :fixture
247255
test "elixir formatter does not support CR line endings" do
248256
in_fixture(Path.join(__DIR__, ".."), "formatter", fn ->
257+
MixProject.store()
249258
path = "lib/file.ex"
250259
uri = SourceFile.Path.to_uri(path)
251260

@@ -269,16 +278,15 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
269278

270279
project_dir = maybe_convert_path_separators(FixtureHelpers.get_path("formatter"))
271280

272-
assert {:error, :internal_error, msg, false} =
281+
assert {:ok, []} =
273282
Formatting.format(source_file, uri, project_dir)
274-
275-
assert String.contains?(msg, "Unable to format")
276283
end)
277284
end
278285

279286
@tag :fixture
280287
test "formatting preserves line indings inside a string" do
281288
in_fixture(Path.join(__DIR__, ".."), "formatter", fn ->
289+
MixProject.store()
282290
path = "lib/file.ex"
283291
uri = SourceFile.Path.to_uri(path)
284292

@@ -334,6 +342,7 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
334342
@tag :fixture
335343
test "returns an error when formatting a file with a syntax error" do
336344
in_fixture(Path.join(__DIR__, ".."), "formatter", fn ->
345+
MixProject.store()
337346
path = "lib/file.ex"
338347
uri = SourceFile.Path.to_uri(path)
339348

@@ -355,16 +364,15 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
355364

356365
project_dir = maybe_convert_path_separators(FixtureHelpers.get_path("formatter"))
357366

358-
assert {:error, :internal_error, msg, false} =
367+
assert {:ok, []} =
359368
Formatting.format(source_file, uri, project_dir)
360-
361-
assert String.contains?(msg, "Unable to format")
362369
end)
363370
end
364371

365372
@tag :fixture
366373
test "Proper utf-16 format: emoji 😀" do
367374
in_fixture(Path.join(__DIR__, ".."), "formatter", fn ->
375+
MixProject.store()
368376
path = "lib/file.ex"
369377
uri = SourceFile.Path.to_uri(path)
370378

@@ -404,6 +412,7 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
404412
@tag :fixture
405413
test "Proper utf-16 format: emoji 🏳️‍🌈" do
406414
in_fixture(Path.join(__DIR__, ".."), "formatter", fn ->
415+
MixProject.store()
407416
path = "lib/file.ex"
408417
uri = SourceFile.Path.to_uri(path)
409418

@@ -443,6 +452,7 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
443452
@tag :fixture
444453
test "Proper utf-16 format: zalgo" do
445454
in_fixture(Path.join(__DIR__, ".."), "formatter", fn ->
455+
MixProject.store()
446456
path = "lib/file.ex"
447457
uri = SourceFile.Path.to_uri(path)
448458

@@ -482,6 +492,7 @@ defmodule ElixirLS.LanguageServer.Providers.FormattingTest do
482492
@tag :fixture
483493
test "honors :inputs when deciding to format" do
484494
in_fixture(Path.join(__DIR__, ".."), "formatter", fn ->
495+
MixProject.store()
485496
project_dir = Path.expand(".")
486497

487498
assert_formatted("file.ex", project_dir)

apps/language_server/test/providers/references_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ defmodule ElixirLS.LanguageServer.Providers.ReferencesTest do
1919
on_exit(fn ->
2020
Code.compiler_options(compiler_options)
2121
Process.monitor(pid)
22-
Process.unlink(pid)
22+
2323
GenServer.stop(pid)
2424

2525
receive do

0 commit comments

Comments
 (0)