aboutsummaryrefslogtreecommitdiff
path: root/gopls/internal/regtest/misc/generate_test.go
blob: 1dc22d737bade4aaaad6e13c1979901508c3149b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// 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.

// TODO(rfindley): figure out why go generate fails on android builders.

//go:build !android
// +build !android

package misc

import (
	"testing"

	. "golang.org/x/tools/internal/lsp/regtest"
)

func TestGenerateProgress(t *testing.T) {
	t.Skipf("skipping flaky test: https://golang.org/issue/49901")

	const generatedWorkspace = `
-- go.mod --
module fake.test

go 1.14
-- generate.go --
// +build ignore

package main

import (
	"io/ioutil"
	"os"
)

func main() {
	ioutil.WriteFile("generated.go", []byte("package " + os.Args[1] + "\n\nconst Answer = 21"), 0644)
}

-- lib1/lib.go --
package lib1

//go:generate go run ../generate.go lib1

-- lib2/lib.go --
package lib2

//go:generate go run ../generate.go lib2

-- main.go --
package main

import (
	"fake.test/lib1"
	"fake.test/lib2"
)

func main() {
	println(lib1.Answer + lib2.Answer)
}
`

	Run(t, generatedWorkspace, func(t *testing.T, env *Env) {
		env.Await(
			env.DiagnosticAtRegexp("main.go", "lib1.(Answer)"),
		)
		env.RunGenerate("./lib1")
		env.RunGenerate("./lib2")
		env.Await(
			OnceMet(
				env.DoneWithChangeWatchedFiles(),
				EmptyDiagnostics("main.go")),
		)
	})
}