vaguerent/internal/core/testing_basis.go
2022-04-25 12:26:42 -05:00

65 lines
1.9 KiB
Go

package core
import (
"context"
"io/ioutil"
"os"
sdkcore "github.com/hashicorp/vagrant-plugin-sdk/core"
coremocks "github.com/hashicorp/vagrant-plugin-sdk/core/mocks"
"github.com/hashicorp/vagrant-plugin-sdk/datadir"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
"github.com/hashicorp/vagrant/internal/server/singleprocess"
"github.com/mitchellh/go-testing-interface"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
)
func seededHostMock(name string) *coremocks.Host {
guestMock := &coremocks.Host{}
guestMock.On("Seeds").Return(sdkcore.NewSeeds(), nil)
guestMock.On("Seed", mock.AnythingOfType("")).Return(nil)
guestMock.On("PluginName").Return(name, nil)
return guestMock
}
func seededGuestMock(name string) *coremocks.Guest {
guestMock := &coremocks.Guest{}
guestMock.On("Seeds").Return(sdkcore.NewSeeds(), nil)
guestMock.On("Seed", mock.AnythingOfType("")).Return(nil)
guestMock.On("PluginName").Return(name, nil)
return guestMock
}
func seededSyncedFolderMock(name string) *coremocks.SyncedFolder {
guestMock := &coremocks.SyncedFolder{}
guestMock.On("Seeds").Return(sdkcore.NewSeeds(), nil)
guestMock.On("Seed", mock.AnythingOfType("")).Return(nil)
return guestMock
}
func TestBasis(t testing.T, opts ...BasisOption) (b *Basis) {
td, err := ioutil.TempDir("", "core")
require.NoError(t, err)
t.Cleanup(func() { os.RemoveAll(td) })
projDir, err := datadir.NewBasis(td)
require.NoError(t, err)
defaultOpts := []BasisOption{
WithClient(singleprocess.TestServer(t)),
WithBasisDataDir(projDir),
WithBasisRef(&vagrant_plugin_sdk.Ref_Basis{Name: "test-basis"}),
}
b, _ = NewBasis(context.Background(), append(defaultOpts, opts...)...)
return
}
func WithTestBasisConfig(config *vagrant_plugin_sdk.Vagrantfile_Vagrantfile) BasisOption {
return func(m *Basis) (err error) {
m.basis.Configuration = config
return
}
}