Add NewTestBundle function to testutils package
This commit adds small helper function in testutils module, that would help with testing modules that relay on bundle interface. The function will take directory with testdata as a parameter, and load all files in it into its fakefile system, allowing bundle to get those files and render required yaml/kustomize files storing them as airship documents in the returned bundle. Change-Id: Ib55180cc720c42cab77626601d9ec0d6151b8454
This commit is contained in:
parent
3bf54274c3
commit
3ca3a34fbf
@ -9,18 +9,12 @@ import (
|
|||||||
"sigs.k8s.io/kustomize/v3/pkg/gvk"
|
"sigs.k8s.io/kustomize/v3/pkg/gvk"
|
||||||
"sigs.k8s.io/kustomize/v3/pkg/types"
|
"sigs.k8s.io/kustomize/v3/pkg/types"
|
||||||
|
|
||||||
"opendev.org/airship/airshipctl/pkg/document"
|
|
||||||
"opendev.org/airship/airshipctl/testutil"
|
"opendev.org/airship/airshipctl/testutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNewBundle(t *testing.T) {
|
func TestNewBundle(t *testing.T) {
|
||||||
|
|
||||||
fSys := testutil.SetupTestFs(t, "testdata")
|
bundle := testutil.NewTestBundle(t, "testdata")
|
||||||
bundle, err := document.NewBundle(fSys, "/", "/")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Building Bundle Failed: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
require := require.New(t)
|
require := require.New(t)
|
||||||
require.NotNil(bundle)
|
require.NotNil(bundle)
|
||||||
|
|
||||||
@ -28,12 +22,7 @@ func TestNewBundle(t *testing.T) {
|
|||||||
|
|
||||||
func TestBundleDocumentFiltering(t *testing.T) {
|
func TestBundleDocumentFiltering(t *testing.T) {
|
||||||
|
|
||||||
fSys := testutil.SetupTestFs(t, "testdata")
|
bundle := testutil.NewTestBundle(t, "testdata")
|
||||||
bundle, err := document.NewBundle(fSys, "/", "/")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Building Bundle Failed: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
|
|
||||||
t.Run("GetKustomizeResourceMap", func(t *testing.T) {
|
t.Run("GetKustomizeResourceMap", func(t *testing.T) {
|
||||||
|
@ -5,7 +5,10 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
"sigs.k8s.io/kustomize/v3/pkg/fs"
|
"sigs.k8s.io/kustomize/v3/pkg/fs"
|
||||||
|
|
||||||
|
"opendev.org/airship/airshipctl/pkg/document"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetupTestFs help manufacture a fake file system for testing purposes. It
|
// SetupTestFs help manufacture a fake file system for testing purposes. It
|
||||||
@ -13,26 +16,28 @@ import (
|
|||||||
// to the tests themselves, and will write each of those files (preserving
|
// to the tests themselves, and will write each of those files (preserving
|
||||||
// names) to an in-memory file system and return that fs
|
// names) to an in-memory file system and return that fs
|
||||||
func SetupTestFs(t *testing.T, fixtureDir string) fs.FileSystem {
|
func SetupTestFs(t *testing.T, fixtureDir string) fs.FileSystem {
|
||||||
|
t.Helper()
|
||||||
|
|
||||||
x := fs.MakeFakeFS()
|
x := fs.MakeFakeFS()
|
||||||
|
|
||||||
files, err := ioutil.ReadDir(fixtureDir)
|
files, err := ioutil.ReadDir(fixtureDir)
|
||||||
if err != nil {
|
require.NoError(t, err, "Failed to read fixture directory, setting up testfs failed")
|
||||||
t.Fatalf("Unable to read fixture directory %s: %v", fixtureDir, err)
|
|
||||||
}
|
|
||||||
for _, file := range files {
|
for _, file := range files {
|
||||||
fileName := file.Name()
|
fileName := file.Name()
|
||||||
filePath := filepath.Join(fixtureDir, fileName)
|
filePath := filepath.Join(fixtureDir, fileName)
|
||||||
fileBytes, err := ioutil.ReadFile(filePath)
|
fileBytes, err := ioutil.ReadFile(filePath)
|
||||||
if err != nil {
|
require.NoError(t, err, "Failed to read file, setting up testfs failed")
|
||||||
t.Fatalf("Error reading fixture %s: %v", filePath, err)
|
|
||||||
}
|
|
||||||
// nolint: errcheck
|
|
||||||
err = x.WriteFile(filepath.Join("/", file.Name()), fileBytes)
|
err = x.WriteFile(filepath.Join("/", file.Name()), fileBytes)
|
||||||
if err != nil {
|
require.NoError(t, err, "Failed to write file, setting up testfs failed")
|
||||||
t.Fatalf("Error writing fixture %s: %v", filePath, err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return x
|
return x
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewTestBundle helps to create a new bundle with FakeFs containing documents from fixtureDir
|
||||||
|
func NewTestBundle(t *testing.T, fixtureDir string) document.Bundle {
|
||||||
|
t.Helper()
|
||||||
|
b, err := document.NewBundle(SetupTestFs(t, fixtureDir), "/", "/")
|
||||||
|
require.NoError(t, err, "Failed to build a bundle, setting up TestBundle failed")
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user