Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools / gopls@v0.5.2 / internal / regtest / shared_test.go
1 // Copyright 2020 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package regtest
6
7 import (
8         "testing"
9 )
10
11 const sharedProgram = `
12 -- go.mod --
13 module mod
14
15 go 1.12
16 -- main.go --
17 package main
18
19 import "fmt"
20
21 func main() {
22         fmt.Println("Hello World.")
23 }`
24
25 func runShared(t *testing.T, program string, testFunc func(env1 *Env, env2 *Env)) {
26         // Only run these tests in forwarded modes.
27         modes := runner.DefaultModes & (Forwarded | SeparateProcess)
28         runner.Run(t, sharedProgram, func(t *testing.T, env1 *Env) {
29                 // Create a second test session connected to the same workspace and server
30                 // as the first.
31                 env2 := NewEnv(env1.Ctx, t, env1.Sandbox, env1.Server, env1.Editor.Config, true)
32                 testFunc(env1, env2)
33         }, WithModes(modes))
34 }
35
36 func TestSimultaneousEdits(t *testing.T) {
37         runShared(t, exampleProgram, func(env1 *Env, env2 *Env) {
38                 // In editor #1, break fmt.Println as before.
39                 env1.OpenFile("main.go")
40                 env1.RegexpReplace("main.go", "Printl(n)", "")
41                 // In editor #2 remove the closing brace.
42                 env2.OpenFile("main.go")
43                 env2.RegexpReplace("main.go", "\\)\n(})", "")
44
45                 // Now check that we got different diagnostics in each environment.
46                 env1.Await(env1.DiagnosticAtRegexp("main.go", "Printl"))
47                 env2.Await(env2.DiagnosticAtRegexp("main.go", "$"))
48         })
49 }
50
51 func TestShutdown(t *testing.T) {
52         runShared(t, sharedProgram, func(env1 *Env, env2 *Env) {
53                 env1.CloseEditor()
54                 // Now make an edit in editor #2 to trigger diagnostics.
55                 env2.OpenFile("main.go")
56                 env2.RegexpReplace("main.go", "\\)\n(})", "")
57                 env2.Await(env2.DiagnosticAtRegexp("main.go", "$"))
58         })
59 }