// 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.

// +build !android

package regtest

import (
	"testing"

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

func TestGenerateProgress(t *testing.T) {
	const generatedWorkspace = `
-- go.mod --
module fake.test

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

package main

import "io/ioutil"

func main() {
	ioutil.WriteFile("generated.go", []byte("package lib\n\nconst answer = 42"), 0644)
}
-- lib/lib.go --
package lib

func GetAnswer() int {
	return answer
}

//go:generate go run generate.go
`

	runner.Run(t, generatedWorkspace, func(t *testing.T, env *Env) {
		env.Await(
			env.DiagnosticAtRegexp("lib/lib.go", "answer"),
		)
		env.RunGenerate("./lib")
		env.Await(
			OnceMet(
				CompletedWork(lsp.DiagnosticWorkTitle(lsp.FromDidChangeWatchedFiles), 1),
				EmptyDiagnostics("lib/lib.go")),
		)
	})
}
