mirror of
https://github.com/golang/go
synced 2024-11-06 13:36:12 -07:00
88e38c1d8d
We were previously sending diagnostics for nonexistent files, and then adding them to the snapshot in the process. Remove this behavior, and add a regression test. Case insensitive filesystems were too confusing to write a test for, but fortunately, Filippo reported another instance of this bug, so I used that for the regression test. Fixes golang/go#38602 Change-Id: I4ef6b51944f3338e838875a5aafffd066e8392f4 Reviewed-on: https://go-review.googlesource.com/c/tools/+/230315 Run-TryBot: Rebecca Stambler <rstambler@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com> Reviewed-by: Robert Findley <rfindley@google.com>
83 lines
1.6 KiB
Go
83 lines
1.6 KiB
Go
// Copyright 2020 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package fake
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
)
|
|
|
|
func TestContentPosition(t *testing.T) {
|
|
content := "foo\n😀\nbar"
|
|
tests := []struct {
|
|
offset, wantLine, wantColumn int
|
|
}{
|
|
{0, 0, 0},
|
|
{3, 0, 3},
|
|
{4, 1, 0},
|
|
{5, 1, 1},
|
|
{6, 2, 0},
|
|
}
|
|
for _, test := range tests {
|
|
pos, err := contentPosition(content, test.offset)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if pos.Line != test.wantLine {
|
|
t.Errorf("contentPosition(%q, %d): Line = %d, want %d", content, test.offset, pos.Line, test.wantLine)
|
|
}
|
|
if pos.Column != test.wantColumn {
|
|
t.Errorf("contentPosition(%q, %d): Column = %d, want %d", content, test.offset, pos.Column, test.wantColumn)
|
|
}
|
|
}
|
|
}
|
|
|
|
const exampleProgram = `
|
|
-- go.mod --
|
|
go 1.12
|
|
-- main.go --
|
|
package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {
|
|
fmt.Println("Hello World.")
|
|
}
|
|
`
|
|
|
|
func TestClientEditing(t *testing.T) {
|
|
ws, err := NewSandbox("TestClientEditing", exampleProgram, "", false)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer ws.Close()
|
|
ctx := context.Background()
|
|
editor := NewEditor(ws)
|
|
if err := editor.OpenFile(ctx, "main.go"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := editor.EditBuffer(ctx, "main.go", []Edit{
|
|
{
|
|
Start: Pos{5, 14},
|
|
End: Pos{5, 26},
|
|
Text: "Hola, mundo.",
|
|
},
|
|
}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
got := editor.buffers["main.go"].text()
|
|
want := `package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {
|
|
fmt.Println("Hola, mundo.")
|
|
}
|
|
`
|
|
if got != want {
|
|
t.Errorf("got text %q, want %q", got, want)
|
|
}
|
|
}
|