pulumi/pkg/codegen/hcl2/binder_test.go
Pat Gavlin b4daf94c2f
[codegen] Add support for caching package schemas. (#4534)
If a single process is going to bind and generate multiple programs, it
is useful to be able to cache package schemas in order to avoid the
(large) overhead of deserializing schemas multiple times.
2020-04-30 13:22:24 -07:00

52 lines
1.2 KiB
Go

package hcl2
import (
"bytes"
"io/ioutil"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
"github.com/pulumi/pulumi/pkg/v2/codegen/hcl2/syntax"
"github.com/pulumi/pulumi/pkg/v2/codegen/internal/test"
)
var testdataPath = filepath.Join("..", "internal", "test", "testdata")
func TestBindProgram(t *testing.T) {
files, err := ioutil.ReadDir(testdataPath)
if err != nil {
t.Fatalf("could not read test data: %v", err)
}
for _, f := range files {
if filepath.Ext(f.Name()) != ".pp" {
continue
}
t.Run(f.Name(), func(t *testing.T) {
path := filepath.Join(testdataPath, f.Name())
contents, err := ioutil.ReadFile(path)
if err != nil {
t.Fatalf("could not read %v: %v", path, err)
}
parser := syntax.NewParser()
err = parser.ParseFile(bytes.NewReader(contents), f.Name())
if err != nil {
t.Fatalf("could not read %v: %v", path, err)
}
if parser.Diagnostics.HasErrors() {
t.Fatalf("failed to parse files: %v", parser.Diagnostics)
}
_, diags, err := BindProgram(parser.Files, PluginHost(test.NewHost(testdataPath)))
assert.NoError(t, err)
if diags.HasErrors() {
t.Fatalf("failed to bind program: %v", diags)
}
})
}
}