mirror of
https://github.com/golang/go
synced 2024-11-19 05:04:43 -07:00
5f9351755f
For all uses inside the lsp we use the detatch logic instead For tests we build it in the test harness instead This is in preparation for things on the context becomming important Change-Id: I7e6910e0d3581b82abbeeb09f9c22a99efb73142 Reviewed-on: https://go-review.googlesource.com/c/tools/+/185677 Run-TryBot: Ian Cottrell <iancottrell@google.com> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
62 lines
1.8 KiB
Go
62 lines
1.8 KiB
Go
// Copyright 2019 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 cmd_test
|
|
|
|
import (
|
|
"os/exec"
|
|
"regexp"
|
|
"strings"
|
|
"testing"
|
|
|
|
"golang.org/x/tools/internal/lsp/cmd"
|
|
"golang.org/x/tools/internal/lsp/tests"
|
|
"golang.org/x/tools/internal/tool"
|
|
)
|
|
|
|
var formatModes = [][]string{
|
|
[]string{},
|
|
[]string{"-d"},
|
|
}
|
|
|
|
func (r *runner) Format(t *testing.T, data tests.Formats) {
|
|
for _, spn := range data {
|
|
for _, mode := range formatModes {
|
|
tag := "gofmt" + strings.Join(mode, "")
|
|
uri := spn.URI()
|
|
filename := uri.Filename()
|
|
args := append(mode, filename)
|
|
expect := string(r.data.Golden(tag, filename, func() ([]byte, error) {
|
|
cmd := exec.Command("gofmt", args...)
|
|
contents, _ := cmd.Output() // ignore error, sometimes we have intentionally ungofmt-able files
|
|
contents = []byte(normalizePaths(r.data, fixFileHeader(string(contents))))
|
|
return contents, nil
|
|
}))
|
|
if expect == "" {
|
|
//TODO: our error handling differs, for now just skip unformattable files
|
|
continue
|
|
}
|
|
app := cmd.New(r.data.Config.Dir, r.data.Config.Env)
|
|
got := captureStdOut(t, func() {
|
|
tool.Main(r.ctx, app, append([]string{"-remote=internal", "format"}, args...))
|
|
})
|
|
got = normalizePaths(r.data, got)
|
|
// check the first two lines are the expected file header
|
|
if expect != got {
|
|
t.Errorf("format failed with %#v expected:\n%s\ngot:\n%s", args, expect, got)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var unifiedHeader = regexp.MustCompile(`^diff -u.*\n(---\s+\S+\.go\.orig)\s+[\d-:. ]+(\n\+\+\+\s+\S+\.go)\s+[\d-:. ]+(\n@@)`)
|
|
|
|
func fixFileHeader(s string) string {
|
|
match := unifiedHeader.FindStringSubmatch(s)
|
|
if match == nil {
|
|
return s
|
|
}
|
|
return strings.Join(append(match[1:], s[len(match[0]):]), "")
|
|
}
|