Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions apps/expert/lib/expert.ex
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
defmodule Expert do
alias Expert.Provider.Handlers
alias Expert.State
alias Expert.Protocol.Convert
alias Expert.Protocol.Id
alias Expert.Provider.Handlers
alias Expert.State
alias GenLSP.Requests
alias GenLSP.Structures

Expand Down
2 changes: 1 addition & 1 deletion apps/expert/lib/expert/configuration.ex
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ defmodule Expert.Configuration do

alias Expert.Configuration.Support
alias Expert.Dialyzer
alias Forge.Project
alias Expert.Protocol.Id
alias Forge.Project
alias GenLSP.Notifications.WorkspaceDidChangeConfiguration
alias GenLSP.Requests
alias GenLSP.Structures
Expand Down
2 changes: 1 addition & 1 deletion apps/expert/lib/expert/project/progress/state.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ defmodule Expert.Project.Progress.State do
alias Expert.Configuration
alias Expert.Project.Progress.Percentage
alias Expert.Project.Progress.Value
alias Forge.Project
alias Expert.Protocol.Id
alias Forge.Project
alias GenLSP.Requests
alias GenLSP.Structures

Expand Down
2 changes: 1 addition & 1 deletion apps/expert/lib/expert/project/search_listener.ex
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
defmodule Expert.Project.SearchListener do
alias Expert.EngineApi
alias Expert.Protocol.Id
alias Forge.Formats
alias Forge.Project
alias Expert.Protocol.Id
alias GenLSP.Requests

import Forge.EngineApi.Messages
Expand Down
2 changes: 1 addition & 1 deletion apps/expert/test/conversions_test.exs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
defmodule Expert.Protocol.ConversionsTest do
alias Expert.Protocol.Conversions
alias Forge.Document
alias Forge.Document.Position, as: ExPosition
alias Expert.Protocol.Conversions
alias GenLSP.Structures.Position, as: LSPosition

use ExUnit.Case
Expand Down
76 changes: 76 additions & 0 deletions apps/expert/test/expert/provider/handlers/code_action_test.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
defmodule Expert.Provider.Handlers.CodeActionTest do
alias Expert.EngineApi
alias Expert.Protocol.Convert
alias Expert.Provider.Handlers
alias Forge.Document
alias GenLSP.Requests.TextDocumentCodeAction
alias GenLSP.Structures

import Forge.EngineApi.Messages
import Forge.Test.Fixtures

use ExUnit.Case, async: false

setup_all do
start_supervised!({Document.Store, derive: [analysis: &Forge.Ast.analyze/1]})
project = project(:navigations)

start_supervised!({DynamicSupervisor, Expert.Project.DynamicSupervisor.options()})
start_supervised!({Expert.Project.Supervisor, project})

EngineApi.register_listener(project, self(), [project_compiled()])
EngineApi.schedule_compile(project, true)

assert_receive project_compiled(), 5000

{:ok, project: project}
end

def build_request(path, {start_line, start_char}, {end_line, end_char}) do
uri = Document.Path.ensure_uri(path)

with {:ok, _} <- Document.Store.open_temporary(uri) do
req = %TextDocumentCodeAction{
id: Expert.Protocol.Id.next(),
params: %Structures.CodeActionParams{
text_document: %Structures.TextDocumentIdentifier{uri: uri},
context: %Structures.CodeActionContext{
trigger_kind: 1,
only: nil,
diagnostics: [
%Structures.Diagnostic{
range: %Structures.Range{
start: %Structures.Position{line: start_line, character: start_char},
end: %Structures.Position{line: end_line, character: end_char}
},
message: "Test diagnostic",
severity: 1,
source: "TestSource"
}
]
},
range: %Structures.Range{
start: %Structures.Position{line: start_line, character: start_char},
end: %Structures.Position{line: end_line, character: end_char}
}
}
}

Convert.to_native(req)
end
end

def handle(request, project) do
config = Expert.Configuration.new(project: project)
Handlers.CodeAction.handle(request, config)
end

describe "handle code actions" do
test "returns code actions for a given range", %{project: project} do
uses_file_path = file_path(project, Path.join("lib", "uses.ex"))
{:ok, request} = build_request(uses_file_path, {4, 4}, {4, 31})

assert {:ok, _actions} = handle(request, project)
end
end
end
4 changes: 2 additions & 2 deletions apps/expert/test/expert/provider/handlers/code_lens_test.exs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
defmodule Expert.Provider.Handlers.CodeLensTest do
alias Expert.EngineApi
alias Expert.Protocol.Convert
alias Expert.Protocol.Id
alias Expert.Provider.Handlers
alias Forge.Document
alias Forge.Project
alias Expert.Protocol.Convert
alias Expert.Protocol.Id
alias GenLSP.Requests.TextDocumentCodeLens
alias GenLSP.Structures

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
defmodule Expert.Provider.Handlers.FindReferencesTest do
alias Expert.EngineApi
alias Expert.Protocol.Convert
alias Expert.Provider.Handlers
alias Forge.Ast.Analysis
alias Forge.Document
alias Forge.Document.Location
alias Expert.Protocol.Convert
alias GenLSP.Requests.TextDocumentReferences
alias GenLSP.Structures

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
defmodule Expert.Provider.Handlers.GoToDefinitionTest do
alias Expert.EngineApi
alias Expert.Protocol.Convert
alias Expert.Provider.Handlers
alias Forge.Document
alias Forge.Document.Location
alias Expert.Protocol.Convert
alias GenLSP.Requests.TextDocumentDefinition
alias GenLSP.Structures

Expand Down
2 changes: 1 addition & 1 deletion apps/expert/test/expert/provider/handlers/hover_test.exs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
defmodule Expert.Provider.Handlers.HoverTest do
alias Expert.EngineApi
alias Expert.Protocol.Convert
alias Expert.Provider.Handlers
alias Forge.Document
alias Forge.Document.Position
alias Forge.EngineApi.Messages
alias Expert.Protocol.Convert
alias Forge.Test.Fixtures
alias GenLSP.Requests
alias GenLSP.Structures
Expand Down
Loading