Skip to content

Commit 8830c45

Browse files
committed
fix tests
1 parent e72c7a4 commit 8830c45

File tree

4 files changed

+102
-50
lines changed

4 files changed

+102
-50
lines changed

apps/language_server/lib/language_server/providers/workspace_symbols.ex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,15 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbols do
7171
GenServer.cast(__MODULE__, :notify_settings_stored)
7272
end
7373

74-
def notify_build_complete(server \\ __MODULE__, override_test_mode \\ false) do
75-
unless :persistent_term.get(:language_server_test_mode, false) && not override_test_mode do
74+
def notify_build_complete(server \\ __MODULE__) do
75+
unless :persistent_term.get(:language_server_test_mode, false) and not :persistent_term.get(:language_server_override_test_mode, false) do
7676
GenServer.cast(server, :build_complete)
7777
end
7878
end
7979

8080
@spec notify_uris_modified([String.t()]) :: :ok | nil
81-
def notify_uris_modified(uris, server \\ __MODULE__, override_test_mode \\ false) do
82-
unless :persistent_term.get(:language_server_test_mode, false) && not override_test_mode do
81+
def notify_uris_modified(uris, server \\ __MODULE__) do
82+
unless :persistent_term.get(:language_server_test_mode, false) and not :persistent_term.get(:language_server_override_test_mode, false) do
8383
GenServer.cast(server, {:uris_modified, uris})
8484
end
8585
end
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
defmodule ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols.Mixfile do
2+
use Mix.Project
3+
4+
def project do
5+
[app: :els_workspace_symbols_test, version: "0.1.0"]
6+
end
7+
8+
# Configuration for the OTP application
9+
#
10+
# Type "mix help compile.app" for more information
11+
def application do
12+
# Specify extra applications you'll use from Erlang/Elixir
13+
[]
14+
end
15+
end
Lines changed: 83 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,89 @@
11
defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbolsTest do
2-
use ExUnit.Case, async: false
32
alias ElixirLS.LanguageServer.Providers.WorkspaceSymbols
3+
alias ElixirLS.LanguageServer.{Server, Protocol, Tracer, MixProjectCache}
4+
use ElixirLS.Utils.MixTest.Case, async: false
5+
import ElixirLS.LanguageServer.Test.ServerTestHelpers
6+
use Protocol
47

58
setup do
6-
alias ElixirLS.Utils.PacketCapture
7-
packet_capture = start_supervised!({PacketCapture, self()})
8-
{:ok, pid} = start_supervised({WorkspaceSymbols, name: nil})
9-
Process.group_leader(pid, packet_capture)
10-
11-
state = :sys.get_state(pid)
12-
13-
fixture_uri =
14-
ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols.module_info(:compile)[:source]
15-
|> List.to_string()
16-
|> ElixirLS.LanguageServer.SourceFile.Path.to_uri()
17-
18-
:sys.replace_state(pid, fn _ ->
19-
%{
20-
state
21-
| modules_indexed: true,
22-
modified_uris: [fixture_uri]
23-
}
9+
{:ok, _} = start_supervised(Tracer)
10+
{:ok, server} = Server.start_link()
11+
{:ok, _} = start_supervised(MixProjectCache)
12+
# {:ok, pid} = start_supervised({WorkspaceSymbols, name: nil})
13+
start_server(server)
14+
:persistent_term.put(:language_server_override_test_mode, true)
15+
16+
on_exit(fn ->
17+
:persistent_term.put(:language_server_override_test_mode, false)
18+
if Process.alive?(server) do
19+
Process.monitor(server)
20+
GenServer.stop(server)
21+
22+
receive do
23+
{:DOWN, _, _, ^server, _} ->
24+
:ok
25+
end
26+
end
2427
end)
2528

26-
WorkspaceSymbols.notify_build_complete(pid, true)
27-
28-
wait_until_indexed(pid)
29-
30-
{:ok, server: pid}
29+
{:ok, %{server: server}}
3130
end
3231

3332
test "empty query", %{server: server} do
34-
assert {:ok, list} = WorkspaceSymbols.symbols("", server)
33+
in_fixture(Path.join(__DIR__, ".."), "workspace_symbols", fn ->
34+
initialize(server)
35+
36+
assert_receive %{
37+
"method" => "window/logMessage",
38+
"params" => %{"message" => "Compile took" <> _}
39+
},
40+
20000
41+
42+
assert {:ok, list} = WorkspaceSymbols.symbols("")
3543
assert is_list(list)
3644
assert list != []
45+
end)
3746
end
3847

3948
test "returns modules", %{server: server} do
40-
assert {:ok, list} = WorkspaceSymbols.symbols("ElixirLS.LanguageServer.Fixtures.", server)
49+
in_fixture(Path.join(__DIR__, ".."), "workspace_symbols", fn ->
50+
initialize(server)
51+
52+
assert_receive %{
53+
"method" => "window/logMessage",
54+
"params" => %{"message" => "Compile took" <> _}
55+
},
56+
20000
57+
58+
assert {:ok, list} = WorkspaceSymbols.symbols("ElixirLS.LanguageServer.Fixtures.")
4159

4260
assert module =
4361
Enum.find(list, &(&1.name == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols"))
4462

4563
assert module.kind == 11
46-
assert module.location.uri |> String.ends_with?("test/support/fixtures/workspace_symbols.ex")
64+
assert module.location.uri |> String.ends_with?("lib/workspace_symbols.ex")
4765

4866
assert module.location.range == %{
4967
end: %{character: 0, line: 1},
5068
start: %{character: 0, line: 0}
5169
}
5270

53-
assert WorkspaceSymbols.symbols("work", server)
71+
assert WorkspaceSymbols.symbols("work")
5472
|> elem(1)
5573
|> Enum.any?(&(&1.name == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols"))
74+
end)
5675
end
5776

5877
test "returns functions", %{server: server} do
59-
assert {:ok, list} = WorkspaceSymbols.symbols("ElixirLS.LanguageServer.Fixtures.", server)
78+
in_fixture(Path.join(__DIR__, ".."), "workspace_symbols", fn ->
79+
initialize(server)
80+
81+
assert_receive %{
82+
"method" => "window/logMessage",
83+
"params" => %{"message" => "Compile took" <> _}
84+
},
85+
20000
86+
assert {:ok, list} = WorkspaceSymbols.symbols("ElixirLS.LanguageServer.Fixtures.")
6087

6188
assert some_function =
6289
Enum.find(
@@ -69,22 +96,31 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbolsTest do
6996
assert some_function.containerName == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols"
7097

7198
assert some_function.location.uri
72-
|> String.ends_with?("test/support/fixtures/workspace_symbols.ex")
99+
|> String.ends_with?("lib/workspace_symbols.ex")
73100

74101
assert some_function.location.range == %{
75102
end: %{character: 0, line: 2},
76103
start: %{character: 0, line: 1}
77104
}
78105

79-
assert WorkspaceSymbols.symbols("fun", server)
106+
assert WorkspaceSymbols.symbols("fun")
80107
|> elem(1)
81108
|> Enum.any?(
82109
&(&1.name == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols.some_function/1")
83110
)
111+
end)
84112
end
85113

86114
test "returns types", %{server: server} do
87-
assert {:ok, list} = WorkspaceSymbols.symbols("ElixirLS.LanguageServer.Fixtures.", server)
115+
in_fixture(Path.join(__DIR__, ".."), "workspace_symbols", fn ->
116+
initialize(server)
117+
118+
assert_receive %{
119+
"method" => "window/logMessage",
120+
"params" => %{"message" => "Compile took" <> _}
121+
},
122+
20000
123+
assert {:ok, list} = WorkspaceSymbols.symbols("ElixirLS.LanguageServer.Fixtures.")
88124

89125
assert some_type =
90126
Enum.find(
@@ -97,7 +133,7 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbolsTest do
97133
assert some_type.containerName == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols"
98134

99135
assert some_type.location.uri
100-
|> String.ends_with?("test/support/fixtures/workspace_symbols.ex")
136+
|> String.ends_with?("lib/workspace_symbols.ex")
101137

102138
assert some_type.location.range == %{
103139
end: %{character: 0, line: 8},
@@ -109,15 +145,24 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbolsTest do
109145
&(&1.name == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols.some_opaque_type/0")
110146
)
111147

112-
assert WorkspaceSymbols.symbols("opa", server)
148+
assert WorkspaceSymbols.symbols("opa")
113149
|> elem(1)
114150
|> Enum.any?(
115151
&(&1.name == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols.some_opaque_type/0")
116152
)
153+
end)
117154
end
118155

119156
test "returns callbacks", %{server: server} do
120-
assert {:ok, list} = WorkspaceSymbols.symbols("ElixirLS.LanguageServer.Fixtures.", server)
157+
in_fixture(Path.join(__DIR__, ".."), "workspace_symbols", fn ->
158+
initialize(server)
159+
160+
assert_receive %{
161+
"method" => "window/logMessage",
162+
"params" => %{"message" => "Compile took" <> _}
163+
},
164+
20000
165+
assert {:ok, list} = WorkspaceSymbols.symbols("ElixirLS.LanguageServer.Fixtures.")
121166

122167
assert some_callback =
123168
Enum.find(
@@ -130,7 +175,7 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbolsTest do
130175
assert some_callback.containerName == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols"
131176

132177
assert some_callback.location.uri
133-
|> String.ends_with?("test/support/fixtures/workspace_symbols.ex")
178+
|> String.ends_with?("lib/workspace_symbols.ex")
134179

135180
assert some_callback.location.range == %{
136181
end: %{character: 0, line: 5},
@@ -142,19 +187,11 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbolsTest do
142187
&(&1.name == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols.some_macrocallback/1")
143188
)
144189

145-
assert WorkspaceSymbols.symbols("macr", server)
190+
assert WorkspaceSymbols.symbols("macr")
146191
|> elem(1)
147192
|> Enum.any?(
148193
&(&1.name == "ElixirLS.LanguageServer.Fixtures.WorkspaceSymbols.some_macrocallback/1")
149194
)
150-
end
151-
152-
defp wait_until_indexed(pid) do
153-
state = :sys.get_state(pid)
154-
155-
if state.modules == [] do
156-
Process.sleep(500)
157-
wait_until_indexed(pid)
158-
end
195+
end)
159196
end
160197
end

0 commit comments

Comments
 (0)