in pkg/testutil/componentsuite/componentsuite.go [38:96]
func Run(t *testing.T, testSuiteFile string) {
t.Logf("Running tests for suite %q", testSuiteFile)
ctx := context.Background()
data, err := ioutil.ReadFile(testSuiteFile)
if err != nil {
t.Fatalf("while reading test suite file %q, %v", testSuiteFile, err)
}
ts := &ComponentTestSuite{}
if err := converter.FromFileName(testSuiteFile, data).ToObject(ts); err != nil {
t.Fatalf("while parsing test-suite file %q, %v", testSuiteFile, err)
}
os.Chdir(filepath.Join(filepath.Dir(testSuiteFile), ts.RootDirectory))
// Inlining expects an absolute parent path, so make the path absolute now.
cfile := ts.ComponentFile
if !filepath.IsAbs(cfile) {
cfile, err = filepath.Abs(cfile)
if err != nil {
t.Fatalf("While making an absolute path out of %s: %v", cfile, err)
}
}
cdata, err := ioutil.ReadFile(cfile)
if err != nil {
t.Fatalf("While reading component file %q, %v", cfile, err)
}
bw, err := wrapper.FromRaw(string(converter.YAML), cdata)
if err != nil {
t.Fatalf("While converting component file %q, %v", cfile, err)
}
if bw.Kind() != "Component" && bw.Kind() != "ComponentBuilder" {
t.Fatalf("Got kind %q, but component kind must be \"Component\" or \"ComponentBuilder\"", bw.Kind())
}
var comp *bundle.Component
if bw.Kind() == "ComponentBuilder" {
inliner := build.NewLocalInliner(ts.RootDirectory)
comp, err = inliner.ComponentFiles(ctx, bw.ComponentBuilder(), cfile)
if err != nil {
t.Fatalf("Inlining component files: %v", err)
}
} else {
comp = bw.Component()
}
for _, tc := range ts.TestCases {
tci := tc // necessary.
t.Run(tc.Description, func(t *testing.T) {
t.Parallel()
runTest(t, comp.DeepCopy(), tci)
})
}
}