Skip to content

Commit 50dd9a9

Browse files
authored
Merge pull request #152 from docker/compose-prepare-rename-support
Support rename preparation requests for Compose
2 parents 90bd2fa + efd9b94 commit 50dd9a9

File tree

10 files changed

+425
-51
lines changed

10 files changed

+425
-51
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ All notable changes to the Docker Language Server will be documented in this fil
2020
- support highlighting the short form `depends_on` syntax for services ([#70](https://github.com/docker/docker-language-server/issues/70))
2121
- support highlighting the long form `depends_on` syntax for services ([#71](https://github.com/docker/docker-language-server/issues/71))
2222
- support highlighting referenced networks, volumes, configs, and secrets ([#145](https://github.com/docker/docker-language-server/issues/145))
23+
- textDocument/prepareRename
24+
- support rename preparation requests ([#150](https://github.com/docker/docker-language-server/issues/150))
2325
- textDocument/rename
2426
- support renaming named references of services, networks, volumes, configs, and secrets ([#149](https://github.com/docker/docker-language-server/issues/149))
2527

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ The Docker Language Server relies on some features that are dependent on [Buildx
1919
- highlight named references of services, networks, volumes, configs, and secrets
2020
- hover tooltips
2121
- open links to images
22+
- rename preparation
2223
- rename named references
2324
- Bake files
2425
- code completion

e2e-tests/prepareRename_test.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package server_test
2+
3+
import (
4+
"bytes"
5+
"context"
6+
"os"
7+
"testing"
8+
9+
"github.com/docker/docker-language-server/internal/tliron/glsp/protocol"
10+
"github.com/sourcegraph/jsonrpc2"
11+
"github.com/stretchr/testify/require"
12+
)
13+
14+
func TestPrepareRename(t *testing.T) {
15+
s := startServer()
16+
17+
client := bytes.NewBuffer(make([]byte, 0, 1024))
18+
server := bytes.NewBuffer(make([]byte, 0, 1024))
19+
serverStream := &TestStream{incoming: server, outgoing: client, closed: false}
20+
defer serverStream.Close()
21+
go s.ServeStream(serverStream)
22+
23+
clientStream := jsonrpc2.NewBufferedStream(&TestStream{incoming: client, outgoing: server, closed: false}, jsonrpc2.VSCodeObjectCodec{})
24+
defer clientStream.Close()
25+
conn := jsonrpc2.NewConn(context.Background(), clientStream, &ConfigurationHandler{t: t})
26+
initialize(t, conn, protocol.InitializeParams{})
27+
28+
homedir, err := os.UserHomeDir()
29+
require.NoError(t, err)
30+
31+
testCases := []struct {
32+
name string
33+
content string
34+
position protocol.Position
35+
result *protocol.Range
36+
}{
37+
{
38+
name: "rename dependent service",
39+
content: `
40+
services:
41+
test:
42+
depends_on:
43+
- test2
44+
test2:`,
45+
position: protocol.Position{Line: 4, Character: 11},
46+
result: &protocol.Range{
47+
Start: protocol.Position{Line: 4, Character: 8},
48+
End: protocol.Position{Line: 4, Character: 13},
49+
},
50+
},
51+
}
52+
53+
for _, tc := range testCases {
54+
t.Run(tc.name, func(t *testing.T) {
55+
didOpen := createDidOpenTextDocumentParams(homedir, t.Name()+".yaml", tc.content, "dockercompose")
56+
err := conn.Notify(context.Background(), protocol.MethodTextDocumentDidOpen, didOpen)
57+
require.NoError(t, err)
58+
59+
var result *protocol.Range
60+
err = conn.Call(context.Background(), protocol.MethodTextDocumentPrepareRename, protocol.PrepareRenameParams{
61+
TextDocumentPositionParams: protocol.TextDocumentPositionParams{
62+
TextDocument: protocol.TextDocumentIdentifier{URI: didOpen.TextDocument.URI},
63+
Position: tc.position,
64+
},
65+
}, &result)
66+
require.NoError(t, err)
67+
require.Equal(t, tc.result, result)
68+
})
69+
}
70+
}

e2e-tests/publishDiagnostics_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func initialize(t *testing.T, conn *jsonrpc2.Conn, initializeParams protocol.Ini
8585
InlayHintProvider: protocol.InlayHintOptions{},
8686
InlineCompletionProvider: protocol.InlineCompletionOptions{},
8787
RenameProvider: protocol.RenameOptions{
88-
PrepareProvider: types.CreateBoolPointer(false),
88+
PrepareProvider: types.CreateBoolPointer(true),
8989
},
9090
SemanticTokensProvider: protocol.SemanticTokensOptions{
9191
Legend: protocol.SemanticTokensLegend{

0 commit comments

Comments
 (0)