Skip to content

Commit e1b2562

Browse files
authored
Do not pass project dir to tracer if mix.exs is not found (#852)
* do not pass project dir to tracer if mix.exs is not found * add tests
1 parent 8b61c09 commit e1b2562

File tree

4 files changed

+33
-1
lines changed

4 files changed

+33
-1
lines changed

apps/language_server/lib/language_server/server.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1153,7 +1153,11 @@ defmodule ElixirLS.LanguageServer.Server do
11531153

11541154
maybe_rebuild(state)
11551155
state = create_gitignore(state)
1156-
Tracer.set_project_dir(state.project_dir)
1156+
1157+
if state.mix_project? do
1158+
Tracer.set_project_dir(state.project_dir)
1159+
end
1160+
11571161
trigger_build(%{state | settings: settings})
11581162
end
11591163

apps/language_server/lib/language_server/tracer.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ defmodule ElixirLS.LanguageServer.Tracer do
8787
end
8888

8989
@impl true
90+
def handle_cast(:save, %{project_dir: nil} = state) do
91+
{:noreply, state}
92+
end
93+
9094
def handle_cast(:save, %{project_dir: project_dir} = state) do
9195
for table <- @tables do
9296
table_name = table_name(table)

apps/language_server/test/server_test.exs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1501,6 +1501,16 @@ defmodule ElixirLS.LanguageServer.ServerTest do
15011501
assert_receive notification("window/logMessage", %{
15021502
"message" => "Compile took" <> _
15031503
})
1504+
1505+
uri = SourceFile.Path.to_uri("a.ex")
1506+
Server.receive_packet(server, did_open(uri, "elixir", 1, ""))
1507+
Server.receive_packet(server, did_save(uri))
1508+
1509+
assert_receive notification("window/logMessage", %{
1510+
"message" => "Compile took" <> _
1511+
})
1512+
1513+
wait_until_compiled(server)
15041514
end)
15051515
end
15061516

@@ -1521,6 +1531,16 @@ defmodule ElixirLS.LanguageServer.ServerTest do
15211531
1000
15221532

15231533
wait_until_compiled(server)
1534+
uri = SourceFile.Path.to_uri("a.ex")
1535+
Server.receive_packet(server, did_open(uri, "elixir", 1, ""))
1536+
Server.receive_packet(server, did_save(uri))
1537+
1538+
assert_receive notification("textDocument/publishDiagnostics", %{
1539+
"diagnostics" => [],
1540+
"uri" => ^uri
1541+
})
1542+
1543+
wait_until_compiled(server)
15241544
end)
15251545
end
15261546
end

apps/language_server/test/tracer_test.exs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ defmodule ElixirLS.LanguageServer.TracerTest do
3333
assert File.exists?(FixtureHelpers.get_path(".elixir_ls/modules.dets"))
3434
end
3535

36+
test "skips save if project dir not set" do
37+
Tracer.save()
38+
end
39+
3640
describe "call trace" do
3741
setup context do
3842
Tracer.set_project_dir(FixtureHelpers.get_path(""))

0 commit comments

Comments
 (0)