tools: Index | Files

package fake

import ""

Package fake provides fake implementations of a text editor, LSP client plugin, and workspace for use in tests.

The Editor type provides a high level API for text editor operations (open/modify/save/close a buffer, jump to definition, etc.), and the Client type exposes an LSP client for the editor that can be connected to a language server. By default, the Editor and Client should be compliant with the LSP spec: their intended use is to verify server compliance with the spec in a variety of environment. Possible future enhancements of these types may allow them to misbehave in configurable ways, but that is not their primary use.

The Workspace type provides a facility for executing tests in a clean workspace and GOPATH.


Package Files

client.go doc.go edit.go editor.go workspace.go

type Client Uses

type Client struct {
    // contains filtered or unexported fields

Client is an adapter that converts a *Client into an LSP Client.

func (*Client) ApplyEdit Uses

func (c *Client) ApplyEdit(ctx context.Context, params *protocol.ApplyWorkspaceEditParams) (*protocol.ApplyWorkspaceEditResponse, error)

ApplyEdit applies edits sent from the server. Note that as of writing gopls doesn't use this feature, so it is untested.

func (*Client) Configuration Uses

func (c *Client) Configuration(context.Context, *protocol.ParamConfiguration) ([]interface{}, error)

func (*Client) Event Uses

func (c *Client) Event(ctx context.Context, event *interface{}) error

func (*Client) LogMessage Uses

func (c *Client) LogMessage(ctx context.Context, params *protocol.LogMessageParams) error

func (*Client) OnDiagnostics Uses

func (c *Client) OnDiagnostics(hook func(context.Context, *protocol.PublishDiagnosticsParams) error)

OnDiagnostics sets the hook to run when the editor receives diagnostics published from the language server.

func (*Client) OnLogMessage Uses

func (c *Client) OnLogMessage(hook func(context.Context, *protocol.LogMessageParams) error)

OnLogMessage sets the hook to run when the editor receives a log message.

func (*Client) PublishDiagnostics Uses

func (c *Client) PublishDiagnostics(ctx context.Context, params *protocol.PublishDiagnosticsParams) error

func (*Client) RegisterCapability Uses

func (c *Client) RegisterCapability(context.Context, *protocol.RegistrationParams) error

func (*Client) ShowMessage Uses

func (c *Client) ShowMessage(ctx context.Context, params *protocol.ShowMessageParams) error

func (*Client) ShowMessageRequest Uses

func (c *Client) ShowMessageRequest(ctx context.Context, params *protocol.ShowMessageRequestParams) (*protocol.MessageActionItem, error)

func (*Client) UnregisterCapability Uses

func (c *Client) UnregisterCapability(context.Context, *protocol.UnregistrationParams) error

func (*Client) WorkspaceFolders Uses

func (c *Client) WorkspaceFolders(context.Context) ([]protocol.WorkspaceFolder, error)

type Edit Uses

type Edit struct {
    Start, End Pos
    Text       string

Edit represents a single (contiguous) buffer edit.

func NewEdit Uses

func NewEdit(startLine, startColumn, endLine, endColumn int, text string) Edit

NewEdit creates an edit replacing all content between (startLine, startColumn) and (endLine, endColumn) with text.

type Editor Uses

type Editor struct {
    // contains filtered or unexported fields

Editor is a fake editor client. It keeps track of client state and can be used for writing LSP tests.

func NewConnectedEditor Uses

func NewConnectedEditor(ctx context.Context, ws *Workspace, conn *jsonrpc2.Conn) (*Editor, error)

NewConnectedEditor creates a new editor that dispatches the LSP across the provided jsonrpc2 connection.

The returned editor is initialized and ready to use.

func NewEditor Uses

func NewEditor(ws *Workspace) *Editor

NewEditor Creates a new Editor.

func (*Editor) Client Uses

func (e *Editor) Client() *Client

Client returns the LSP client for this editor.

func (*Editor) CloseBuffer Uses

func (e *Editor) CloseBuffer(ctx context.Context, path string) error

CloseBuffer removes the current buffer (regardless of whether it is saved).

func (*Editor) CreateBuffer Uses

func (e *Editor) CreateBuffer(ctx context.Context, path, content string) error

CreateBuffer creates a new unsaved buffer corresponding to the workspace path, containing the given textual content.

func (*Editor) EditBuffer Uses

func (e *Editor) EditBuffer(ctx context.Context, path string, edits []Edit) error

EditBuffer applies the given test edits to the buffer identified by path.

func (*Editor) Exit Uses

func (e *Editor) Exit(ctx context.Context) error

Exit issues the 'exit' LSP notification.

func (*Editor) GoToDefinition Uses

func (e *Editor) GoToDefinition(ctx context.Context, path string, pos Pos) (string, Pos, error)

GoToDefinition jumps to the definition of the symbol at the given position in an open buffer.

func (*Editor) OpenFile Uses

func (e *Editor) OpenFile(ctx context.Context, path string) error

OpenFile creates a buffer for the given workspace-relative file.

func (*Editor) Shutdown Uses

func (e *Editor) Shutdown(ctx context.Context) error

Shutdown issues the 'shutdown' LSP notification.

func (*Editor) WriteBuffer Uses

func (e *Editor) WriteBuffer(ctx context.Context, path string) error

WriteBuffer writes the content of the buffer specified by the given path to the filesystem.

type FileEvent Uses

type FileEvent struct {
    Path          string
    ProtocolEvent protocol.FileEvent

FileEvent wraps the protocol.FileEvent so that it can be associated with a workspace-relative path.

type Pos Uses

type Pos struct {
    Line, Column int

Pos represents a 0-indexed position in a text buffer.

type Workspace Uses

type Workspace struct {
    // contains filtered or unexported fields

The Workspace type represents a temporary workspace to use for editing Go files in tests.

func NewWorkspace Uses

func NewWorkspace(name string, txt []byte) (_ *Workspace, err error)

NewWorkspace creates a named workspace populated by the txtar-encoded content given by txt. It creates temporary directories for the workspace content and for GOPATH.

func (*Workspace) AddWatcher Uses

func (w *Workspace) AddWatcher(watcher func(context.Context, []FileEvent))

AddWatcher registers the given func to be called on any file change.

func (*Workspace) Close Uses

func (w *Workspace) Close() error

Close removes all state associated with the workspace.

func (*Workspace) GOPATH Uses

func (w *Workspace) GOPATH() string

GOPATH returns the value that GOPATH should be set to for this workspace.

func (*Workspace) ReadFile Uses

func (w *Workspace) ReadFile(path string) (string, error)

ReadFile reads a text file specified by a workspace-relative path.

func (*Workspace) RemoveFile Uses

func (w *Workspace) RemoveFile(ctx context.Context, path string) error

RemoveFile removes a workspace-relative file path.

func (*Workspace) RootURI Uses

func (w *Workspace) RootURI() protocol.DocumentURI

RootURI returns the root URI for this workspace.

func (*Workspace) URI Uses

func (w *Workspace) URI(path string) protocol.DocumentURI

URI returns the URI to a the workspace-relative path.

func (*Workspace) URIToPath Uses

func (w *Workspace) URIToPath(uri protocol.DocumentURI) string

URIToPath converts a uri to a workspace-relative path (or an absolute path, if the uri is outside of the workspace).

func (*Workspace) WriteFile Uses

func (w *Workspace) WriteFile(ctx context.Context, path, content string) error

WriteFile writes text file content to a workspace-relative path.

Package fake imports 11 packages (graph) and is imported by 1 packages. Updated 2020-02-20. Refresh now. Tools for package owners.