php-parser/internal/tester/parser.go

47 lines
825 B
Go

package tester
import (
"testing"
"github.com/VKCOM/php-parser/pkg/ast"
"github.com/VKCOM/php-parser/pkg/conf"
"github.com/VKCOM/php-parser/pkg/parser"
"github.com/VKCOM/php-parser/pkg/version"
"gotest.tools/assert"
)
type ParserTestSuite struct {
t *testing.T
Code string
Expected ast.Vertex
Version version.Version
}
func NewParserTestSuite(t *testing.T) *ParserTestSuite {
return &ParserTestSuite{
t: t,
Version: version.Version{
Major: 7,
Minor: 4,
},
}
}
func (p *ParserTestSuite) UsePHP8() {
p.Version = version.Version{Major: 8, Minor: 0}
}
func (p *ParserTestSuite) Run() {
config := conf.Config{
Version: &p.Version,
}
actual, err := parser.Parse([]byte(p.Code), config)
if err != nil {
p.t.Fatalf("Error parse: %v", err)
}
assert.DeepEqual(p.t, p.Expected, actual)
}