mirror of
https://github.com/golang/go
synced 2024-11-05 17:36:15 -07:00
62a0bb781d
This change reworks CL 240118 to apply gofumpt directly as a formatter, not an analyzer. Depending on how gofumpt changes, we may be able to use it as an analyzer in the future, but for now it's just easier to add it as a formatting hook. Fixes golang/go#39805 Change-Id: I227fde4b1916d8a82557f30dfca88e155136dff5 Reviewed-on: https://go-review.googlesource.com/c/tools/+/241985 Run-TryBot: Rebecca Stambler <rstambler@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com>
162 lines
3.2 KiB
Go
162 lines
3.2 KiB
Go
package regtest
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"golang.org/x/tools/internal/lsp/tests"
|
|
)
|
|
|
|
const unformattedProgram = `
|
|
-- main.go --
|
|
package main
|
|
import "fmt"
|
|
func main( ) {
|
|
fmt.Println("Hello World.")
|
|
}
|
|
-- main.go.golden --
|
|
package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {
|
|
fmt.Println("Hello World.")
|
|
}
|
|
`
|
|
|
|
func TestFormatting(t *testing.T) {
|
|
runner.Run(t, unformattedProgram, func(t *testing.T, env *Env) {
|
|
env.OpenFile("main.go")
|
|
env.FormatBuffer("main.go")
|
|
got := env.Editor.BufferText("main.go")
|
|
want := env.ReadWorkspaceFile("main.go.golden")
|
|
if got != want {
|
|
t.Errorf("unexpected formatting result:\n%s", tests.Diff(want, got))
|
|
}
|
|
})
|
|
}
|
|
|
|
// Tests golang/go#36824.
|
|
func TestFormattingOneLine36824(t *testing.T) {
|
|
const onelineProgram = `
|
|
-- a.go --
|
|
package main; func f() {}
|
|
|
|
-- a.go.formatted --
|
|
package main
|
|
|
|
func f() {}
|
|
`
|
|
runner.Run(t, onelineProgram, func(t *testing.T, env *Env) {
|
|
env.OpenFile("a.go")
|
|
env.FormatBuffer("a.go")
|
|
got := env.Editor.BufferText("a.go")
|
|
want := env.ReadWorkspaceFile("a.go.formatted")
|
|
if got != want {
|
|
t.Errorf("unexpected formatting result:\n%s", tests.Diff(want, got))
|
|
}
|
|
})
|
|
}
|
|
|
|
// Tests golang/go#36824.
|
|
func TestFormattingOneLineImports36824(t *testing.T) {
|
|
const onelineProgramA = `
|
|
-- a.go --
|
|
package x; func f() {fmt.Println()}
|
|
|
|
-- a.go.imported --
|
|
package x
|
|
|
|
import "fmt"
|
|
|
|
func f() { fmt.Println() }
|
|
`
|
|
runner.Run(t, onelineProgramA, func(t *testing.T, env *Env) {
|
|
env.OpenFile("a.go")
|
|
env.OrganizeImports("a.go")
|
|
got := env.Editor.BufferText("a.go")
|
|
want := env.ReadWorkspaceFile("a.go.imported")
|
|
if got != want {
|
|
t.Errorf("unexpected formatting result:\n%s", tests.Diff(want, got))
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestFormattingOneLineRmImports36824(t *testing.T) {
|
|
const onelineProgramB = `
|
|
-- a.go --
|
|
package x; import "os"; func f() {}
|
|
|
|
-- a.go.imported --
|
|
package x
|
|
|
|
func f() {}
|
|
`
|
|
runner.Run(t, onelineProgramB, func(t *testing.T, env *Env) {
|
|
env.OpenFile("a.go")
|
|
env.OrganizeImports("a.go")
|
|
got := env.Editor.BufferText("a.go")
|
|
want := env.ReadWorkspaceFile("a.go.imported")
|
|
if got != want {
|
|
t.Errorf("unexpected formatting result:\n%s", tests.Diff(want, got))
|
|
}
|
|
})
|
|
}
|
|
|
|
const disorganizedProgram = `
|
|
-- main.go --
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"errors"
|
|
)
|
|
func main( ) {
|
|
fmt.Println(errors.New("bad"))
|
|
}
|
|
-- main.go.organized --
|
|
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
func main( ) {
|
|
fmt.Println(errors.New("bad"))
|
|
}
|
|
-- main.go.formatted --
|
|
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
func main() {
|
|
fmt.Println(errors.New("bad"))
|
|
}
|
|
`
|
|
|
|
func TestOrganizeImports(t *testing.T) {
|
|
runner.Run(t, disorganizedProgram, func(t *testing.T, env *Env) {
|
|
env.OpenFile("main.go")
|
|
env.OrganizeImports("main.go")
|
|
got := env.Editor.BufferText("main.go")
|
|
want := env.ReadWorkspaceFile("main.go.organized")
|
|
if got != want {
|
|
t.Errorf("unexpected formatting result:\n%s", tests.Diff(want, got))
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestFormattingOnSave(t *testing.T) {
|
|
runner.Run(t, disorganizedProgram, func(t *testing.T, env *Env) {
|
|
env.OpenFile("main.go")
|
|
env.SaveBuffer("main.go")
|
|
got := env.Editor.BufferText("main.go")
|
|
want := env.ReadWorkspaceFile("main.go.formatted")
|
|
if got != want {
|
|
t.Errorf("unexpected formatting result:\n%s", tests.Diff(want, got))
|
|
}
|
|
})
|
|
}
|