vaguerent/internal/plugin/testing_factory.go

57 lines
1.1 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package plugin
import (
"github.com/hashicorp/vagrant-plugin-sdk/component"
"github.com/mitchellh/go-testing-interface"
)
func TestMinimalPluginInstance(t testing.T) *Instance {
inst := &Instance{
Name: "test",
}
return inst
}
func TestPluginInstance(t testing.T, opts ...PluginInstanceProperty) *Instance {
inst := TestMinimalPluginInstance(t)
for _, opt := range opts {
if err := opt(inst); err != nil {
t.Error(err)
}
}
return inst
}
type PluginInstanceProperty func(*Instance) error
func WithPluginInstanceName(name string) PluginInstanceProperty {
return func(i *Instance) (err error) {
i.Name = name
return
}
}
func WithPluginInstanceType(t component.Type) PluginInstanceProperty {
return func(i *Instance) (err error) {
i.Type = t
return
}
}
func WithPluginInstanceComponent(c interface{}) PluginInstanceProperty {
return func(i *Instance) (err error) {
i.Component = c
return
}
}
func WithPluginInstanceParent(p *Instance) PluginInstanceProperty {
return func(i *Instance) (err error) {
i.Parent = p
return
}
}