1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-09 09:26:54 +00:00
kyverno/vendor/gotest.tools/assert/cmd/gty-migrate-from-testify/migrate_test.go

301 lines
5.5 KiB
Go
Raw Normal View History

2019-06-03 15:07:38 -07:00
package main
import (
"go/parser"
"go/token"
"testing"
"golang.org/x/tools/go/loader"
"gotest.tools/assert"
"gotest.tools/assert/cmp"
)
func TestMigrateFileReplacesTestingT(t *testing.T) {
source := `
package foo
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestSomething(t *testing.T) {
a := assert.TestingT
b := require.TestingT
c := require.TestingT(t)
if a == b {}
}
func do(t require.TestingT) {}
`
migration := newMigrationFromSource(t, source)
migrateFile(migration)
expected := `package foo
import (
"testing"
"gotest.tools/assert"
)
func TestSomething(t *testing.T) {
a := assert.TestingT
b := assert.TestingT
c := assert.TestingT(t)
if a == b {
}
}
func do(t assert.TestingT) {}
`
actual, err := formatFile(migration)
assert.NilError(t, err)
assert.Assert(t, cmp.Equal(expected, string(actual)))
}
func newMigrationFromSource(t *testing.T, source string) migration {
fileset := token.NewFileSet()
nodes, err := parser.ParseFile(
fileset,
"foo.go",
source,
parser.AllErrors|parser.ParseComments)
assert.NilError(t, err)
fakeImporter, err := newFakeImporter()
assert.NilError(t, err)
defer fakeImporter.Cleanup()
opts := options{}
conf := loader.Config{
Fset: fileset,
ParserMode: parser.ParseComments,
Build: buildContext(opts),
AllowErrors: true,
FindPackage: fakeImporter.Import,
}
conf.TypeChecker.Error = func(e error) {}
conf.CreateFromFiles("foo.go", nodes)
prog, err := conf.Load()
assert.NilError(t, err)
pkgInfo := prog.InitialPackages()[0]
return migration{
file: pkgInfo.Files[0],
fileset: fileset,
importNames: newImportNames(nodes.Imports, opts),
pkgInfo: pkgInfo,
}
}
func TestMigrateFileWithNamedCmpPackage(t *testing.T) {
source := `
package foo
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestSomething(t *testing.T) {
assert.Equal(t, "a", "b")
}
`
migration := newMigrationFromSource(t, source)
migration.importNames.cmp = "is"
migrateFile(migration)
expected := `package foo
import (
"testing"
"gotest.tools/assert"
is "gotest.tools/assert/cmp"
)
func TestSomething(t *testing.T) {
assert.Check(t, is.Equal("a", "b"))
}
`
actual, err := formatFile(migration)
assert.NilError(t, err)
assert.Assert(t, cmp.Equal(expected, string(actual)))
}
func TestMigrateFileWithCommentsOnAssert(t *testing.T) {
source := `
package foo
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestSomething(t *testing.T) {
// This is going to fail
assert.Equal(t, "a", "b")
}
`
migration := newMigrationFromSource(t, source)
migrateFile(migration)
expected := `package foo
import (
"testing"
"gotest.tools/assert"
"gotest.tools/assert/cmp"
)
func TestSomething(t *testing.T) {
// This is going to fail
assert.Check(t, cmp.Equal("a", "b"))
}
`
actual, err := formatFile(migration)
assert.NilError(t, err)
assert.Assert(t, cmp.Equal(expected, string(actual)))
}
func TestMigrateFileConvertNilToNilError(t *testing.T) {
source := `
package foo
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/assert"
)
func TestSomething(t *testing.T) {
var err error
assert.Nil(t, err)
require.Nil(t, err)
}
`
migration := newMigrationFromSource(t, source)
migrateFile(migration)
expected := `package foo
import (
"testing"
"gotest.tools/assert"
)
func TestSomething(t *testing.T) {
var err error
assert.Check(t, err)
assert.NilError(t, err)
}
`
actual, err := formatFile(migration)
assert.NilError(t, err)
assert.Assert(t, cmp.Equal(expected, string(actual)))
}
func TestMigrateFileConvertAssertNew(t *testing.T) {
source := `
package foo
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestSomething(t *testing.T) {
is := assert.New(t)
is.Equal("one", "two")
is.NotEqual("one", "two")
assert := require.New(t)
assert.Equal("one", "two")
assert.NotEqual("one", "two")
}
func TestOtherName(z *testing.T) {
is := require.New(z)
is.Equal("one", "two")
}
`
migration := newMigrationFromSource(t, source)
migrateFile(migration)
expected := `package foo
import (
"testing"
"gotest.tools/assert"
"gotest.tools/assert/cmp"
)
func TestSomething(t *testing.T) {
assert.Check(t, cmp.Equal("one", "two"))
assert.Check(t, "one" != "two")
assert.Equal(t, "one", "two")
assert.Assert(t, "one" != "two")
}
func TestOtherName(z *testing.T) {
assert.Equal(z, "one", "two")
}
`
actual, err := formatFile(migration)
assert.NilError(t, err)
assert.Assert(t, cmp.Equal(expected, string(actual)))
}
func TestMigrateFileWithExtraArgs(t *testing.T) {
source := `
package foo
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestSomething(t *testing.T) {
var err error
assert.Error(t, err, "this is a comment")
assert.Empty(t, nil, "more comment")
require.Equal(t, []string{}, []string{}, "because")
}
`
migration := newMigrationFromSource(t, source)
migration.importNames.cmp = "is"
migrateFile(migration)
expected := `package foo
import (
"testing"
"gotest.tools/assert"
is "gotest.tools/assert/cmp"
)
func TestSomething(t *testing.T) {
var err error
assert.Check(t, is.ErrorContains(err, ""), "this is a comment")
assert.Check(t, is.Len(nil, 0), "more comment")
assert.Assert(t, is.DeepEqual([]string{}, []string{}), "because")
}
`
actual, err := formatFile(migration)
assert.NilError(t, err)
assert.Assert(t, cmp.Equal(expected, string(actual)))
}