mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-09 09:26:54 +00:00
300 lines
5.5 KiB
Go
300 lines
5.5 KiB
Go
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)))
|
|
}
|